zoukankan      html  css  js  c++  java
  • NSPredicate,谓词

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

    在语言上,谓语,谓词是用来判断的,比如“我是程序猿”中的是,就是表判断的谓语, “是”就是一个谓词,在objective-c中,应该说在COCOA中的NSPredicate表示的就是一种判断。一种条件的构建。我们可以先通过 NSPredicate中的predicateWithFormat方法来生成一个NSPredicate对象表示一个条件,然后在别的对象中通过 evaluateWithObject方法来进行判断,返回一个布尔值。还是看代码简单明了:
    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


    灵活多变,我们暂且掌握到这里便足够了。另外,到今天为止,我们的objective-c基础就告一段落了,马上我要推出IPhone开发的教学 博客,希望大家继续关注。如果我之前的博客有什么错误的地方或者不够清楚的,可以评论告诉我,最后,感谢关注。

  • 相关阅读:
    Flask_自定义参数类型(自定义转换器)
    数据结构与算法(排序)
    数据结构与算法(查找)
    Vue_fetch和axios数据请求
    Vue_修饰符
    Vue_列表过滤应用
    Vue_生命周期函数
    Vue_watch()方法,检测数据的改变
    Django_redis_缓存
    防火墙相关
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3472623.html
Copyright © 2011-2022 走看看