OC- 使用cocoa的NSPredicate查询搜索

在objective-c中,应该说在COCOA中的NSPredicate表示的就是一种判断。一种条件的构建。我们可以先通过NSPredicate中的predicateWithFormat方法来生成一个NSPredicate对象表示一个条件,然后在别的对象中通过evaluateWithObject方法来进行判断,返回一个布尔值。还是看代码简单明了:

[plain]  view plain copy
  1. #import <Foundation/Foundation.h>  
  2. @interface Human :NSObject  
  3. {  
  4.     NSString *name;  
  5.     int age;  
  6.     Human *child;  
  7.       
  8. }  
  9. @property (copy)NSString *name;  
  10. @property int age;  
  11. @end  
  12. @implementation Human  
  13. @synthesize name;  
  14. @synthesize age;  
  15.   
  16.   
  17. @end  
  18. int main(int argc, const char * argv[])  
  19. {  
  20.   
  21.     @autoreleasepool {  
  22.         //利用kvc进行对象初始化  
  23.         Human *human = [[Human alloc]init];  
  24.         Human *child = [[Human alloc]init];  
  25.         [human setValue:@"holydancer" forKey:@"name"];  
  26.         [human setValue:[NSNumber numberWithInt:20] forKey:@"age"];  
  27.         [human setValue:child forKey:@"child"];  
  28.         [human setValue:[NSNumber numberWithInt:5] forKeyPath:@"child.age"];  
  29.           
  30.         NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"name=='holydancer'"];//创建谓词判断属性  
  31.         NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"child.age==5"];//创建谓词判断属性的属性  
  32.         //此处在创建谓词时可以有好多种条件写法,比如大小比较,范围验证,甚至像数据库操作那样的like运算符,这里就不一一列举了  
  33.           
  34.         BOOL tmp1=[predicate1 evaluateWithObject:human];//验证谓词是否成立,得到布尔返回值  
  35.         BOOL tmp2=[predicate2 evaluateWithObject:human];  
  36.         if (tmp1) {  
  37.             NSLog(@"human对象的name属性为'holydancer'");  
  38.         }  
  39.         if (tmp2) {  
  40.             NSLog(@"human对象的child属性的age为5");  
  41.   
  42.         }  
  43.           
  44.   }  
  45.     return 0;  
  46. }  

2012-03-21 19:59:42.668 predicate[2246:403] human对象的name属性为'holydancer'

2012-03-21 19:59:42.670 predicate[2246:403] human对象的child属性的age5


语法结构有点儿类似之前我们介绍的KVC,灵活多变。


原文地址:http://blog.csdn.net/holydancer/article/details/7380799

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值