谓词基本使用

 1 #pragma mark - 谓词基本使用
 2 - (void)demo1
 3 {
 4     // 谓词的用处是用来判断对象是否符合某种要求
 5     // predicateWithFormat指定谓词匹配的条件
 6     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS 'ao'"];
 7     
 8     NSString *str = @"hello";
 9     
10     // 用谓词来匹配字符串
11     if ([predicate evaluateWithObject:str]) {
12         NSLog(@"符合条件");
13     } else {
14         NSLog(@"不符合条件");
15     }
16 }
17 
18 #pragma mark - 匹配数组
19 - (void)demo2
20 {
21     // 准备数据
22     NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:30];
23     
24     for (NSInteger i = 0; i < 30; i++) {
25         NSString *name = [NSString stringWithFormat:@"ID:%04d", arc4random_uniform(10000)];
26         NSInteger age = arc4random_uniform(20) + 15;
27         
28         Person *p = [Person personWithName:name age:age];
29         
30         [arrayM addObject:p];
31     }
32     // 需求:
33     // 1> 姓名中包含"8"字符串的名字
34     // 2> 查询年龄范围在 18 和 22 之间的
35     // CONTAINS[cd]在匹配字符串时,不区分大小写,不区分注音符号
36 //    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN {18, 22} && name CONTAINS[cd] '8'"];
37 
38     // 使用谓词对对象进行匹配时,是通过KVC进行匹配的,指定keyPath,需要用%K
39     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K CONTAINS '8'", @"name"];
40     
41     // 对数组进行过滤
42     NSLog(@"匹配结果 %@", [arrayM filteredArrayUsingPredicate:predicate]);
43 }
posted @ 2014-01-09 14:41  yuan555  阅读(199)  评论(0编辑  收藏  举报