NSPredicate类,指定过滤器的条件---董鑫
/* 比较和逻辑运算符 就像前面的例子中使用了==操作符,NSPredicate还支持>, >=, <, <=, !=, <>,还支持AND, OR, NOT(或写成C语言样式&&, ||, ! ),其中AND,OR,NOT还是不区分大小写的 */ NSArray *array = [NSArray array]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age <= 28"]; for (Student *student in array) { //标示指定的对象是否满足谓语条件 if ([predicate evaluateWithObject:student]) { NSLog(@"person name : %@",student.name); } } //返回一个符合谓语条件的数组 NSArray *newArray = [array filteredArrayUsingPredicate:predicate]; for (Student *student in newArray) { NSLog(@"person name : %@",student.name); } /* 关键字 IN,BEGINSWITH,ENDSWITH,CONTAINS,LIKE,大小写都可以.添加的限制性字符串一定要添加'' */ Student *student = [[Student alloc]init]; NSPredicate *preIN = [NSPredicate predicateWithFormat:@"student.name IN {'rose','bruse'}"]; NSArray *student1 = [array filteredArrayUsingPredicate:preIN]; //以**开始beginswith NSPredicate *preBeginsWith = [NSPredicate predicateWithFormat:@"student.name beginswith '滚犊子'"]; NSArray *student2 = [array filteredArrayUsingPredicate:preBeginsWith]; //以**结尾endswith NSPredicate *preEndsWith = [NSPredicate predicateWithFormat:@"student.name endswith '滚犊子'"]; NSArray *student3 = [array filteredArrayUsingPredicate:preEndsWith]; //包含contains NSPredicate *preContains = [NSPredicate predicateWithFormat:@"student.name contains '滚犊子'"]; NSArray *student4 = [array filteredArrayUsingPredicate:preContains]; //模糊查询like NSPredicate *preLike = [NSPredicate predicateWithFormat:@"student.name like '*%@*'",@"滚犊子"]; NSArray *student5 = [array filteredArrayUsingPredicate:preLike];
作者:SIBU iOS DEV
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.