• objective-c中使用cocoa的NSPredicate,谓词(十四)


    holydancer原创,如需转载,请在显要位置注明:

    转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7380799

     

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

    #import <Foundation/Foundation.h>
    @interface Human :NSObject
    {
        NSString *name;
        int age;
        Human *child;
        
    }
    @property (copy)NSString *name;
    @property int age;
    @end
    @implementation Human
    @synthesize name;
    @synthesize age;
    
    
    @end
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            //利用kvc进行对象初始化
            Human *human = [[Human alloc]init];
            Human *child = [[Human alloc]init];
            [human setValue:@"holydancer" forKey:@"name"];
            [human setValue:[NSNumber numberWithInt:20] forKey:@"age"];
            [human setValue:child forKey:@"child"];
            [human setValue:[NSNumber numberWithInt:5] forKeyPath:@"child.age"];
            
            NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"name=='holydancer'"];//创建谓词判断属性
            NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"child.age==5"];//创建谓词判断属性的属性
            //此处在创建谓词时可以有好多种条件写法,比如大小比较,范围验证,甚至像数据库操作那样的like运算符,这里就不一一列举了
            
            BOOL tmp1=[predicate1 evaluateWithObject:human];//验证谓词是否成立,得到布尔返回值
            BOOL tmp2=[predicate2 evaluateWithObject:human];
            if (tmp1) {
                NSLog(@"human对象的name属性为'holydancer'");
            }
            if (tmp2) {
                NSLog(@"human对象的child属性的age为5");
    
            }
            
      }
        return 0;
    }

    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 ,objective c, oc ,谓词 ,NSPredicate  ,IPhone开发基础 .

     

    好了,写到这里大家就会发现谓词的用法其实很简单,语法结构有点儿类似之前我们介绍的KVC,灵活多变,我们暂且掌握到这里便足够了。另外,到今天为止,我们的objective-c基础就告一段落了,马上我要推出IPhone开发的教学博客,希望大家继续关注。如果我之前的博客有什么错误的地方或者不够清楚的,可以评论告诉我,最后,感谢关注。

  • 相关阅读:
    [转载]很完整的2、8、10、16进制转换方法
    [转载]C++星号的含义
    [转载]C++星号的含义
    [转载]麦凯66表格
    [转载]js入门·对象属性方法大总结
    [转载]图解《越狱》中纸玫瑰的折法
    [转载]比较开始日期与结束日期的js方法
    Cannot set device tcp segmentation offload settings: Invalid argument
    记一次薪酬谈判的教训
    TCP拥塞状态机的实现(中)
  • 原文地址:https://www.cnblogs.com/wangpei/p/3332700.html
Copyright © 2020-2023  润新知