Objective-C NSPredicate
来源:互联网 发布:pc网络格斗游戏排行榜 编辑:程序博客网 时间:2024/05/19 02:42
1.NSPredicate的作用
Cocoa用NSPredicate描述查询方式。
2.创建谓词
NSPredicate *predicate;predicate = [NSPredicate predicateWithFormat:@"name == 'XXX'"];
3.使用谓词
BOOL match = [predicate evaluateWithObject:car];NSLog(@"%s",(match)?"YES":“NO”);
-evaluateWithObject:通知接受对象(谓词)根据指定的对象计算自身的值。此处,接受对象为car,使用name作为键路径,应用valueForKeyPath:方法获得名称。然后,它将自身的值和“XXX”相比较。
另一种形式:
predicate = [NSPredicate predicateWithFormat:@"engine.power>150"];match = [predicate evaluateWithObject:car];
如果需要检查的结果是对象集合:
NSArray *cars = [garage cars];for(Car *car in [garage cars]){if([predicate evaluateWithObject:car]){.......;}}可不可以不写for循环? 答:可以
-filteredArrayUsingPredicate:是NSArray数组中的一种类别方法,它将循环过滤数组内容,根据谓词计算每个对象的值,并且将值为YES的对象积累到将要返回的新数组中:
NSArray *results;results = [cars filteredArrayUsingPredicate:predicate];NSLog(@“%@”,result);
假设有个可变数组,需要剔除不属于该数组的所有项目。NSMutableArray具有的-filterUsingPredicate方法,可以实现:
NSMutableArray *carsCopy = [cars mutableCopy];[carsCopy filterUsingPredicate:predicate];
NSSet也有类似的方法调用
4.格式说明符——避免硬编码
predicate = [NSPredicate predicateWithFormat:@"engine.power>%d",50];//当然50也可以是一个变量,将代码放入接口之中
注意一下2段代码的区别:
predicate = [NSPredicate predicateWithFormat:@"name == %@",@"XXX"];predicate = [NSPredicate predicateWithFormat:@"name == %s","XXX"];
还可以通过%K指定键路径:
predicate = [NSPredicate predicateWithFormat:@"%K == %@",@"name",@"XXX"];
还可以将变量名放入字符串中(类似于环境变量):
NSPredicate predicateTemp = [NSPredicate predicateWithFormat:@"name ==$NAME",];NSDictionary *varDict = [NSDictionary dicitionaryWithObjectsAndKeys:@"XXX",@"NAME",nil];predicate = [predicateTemp predicateWithSubstiutionVariable:varDict];
5.运算符
谓词字符串语法支持使用括号语句拓展
BETWEEN:
NSArray *betweens = [NSArray arrayWithObjects:[NSNumber numberWithInit:50],[NSNumber numberWithInit:50],nil];predicate = [NSPredicate predicateWithFormat:@"engine.power BETWEEN %@",betweens];
也可以使用Dictionary
0 0
- Objective-C NSPredicate
- 【Objective-C基础】NSPredicate
- Objective-C NSPredicate
- Objective-C之谓词NSPredicate
- objective-C之 NSPredicate(谓词)
- objective-C学习 谓词NSPredicate 可过滤
- Objective-C中谓词(NSPredicate)的应用
- objective-c中使用cocoa的NSPredicate,谓词(十四)
- objective-c中使用cocoa的NSPredicate,谓词(十四)
- objective-c中使用cocoa的NSPredicate,谓词
- objective-c中使用cocoa的NSPredicate,谓词(十四)
- NSPredicate查询数组(Objective-C 开发范例)
- Object-c---NSPredicate用法
- NSPredicate
- NSPredicate
- NSPredicate
- NSPredicate
- NSPredicate
- C可变参数列表
- 设计模式汇总
- 语言代码表
- 自己选择的路,跪着走也要走完
- 黑马程序员_Java_IO流(一)
- Objective-C NSPredicate
- 家庭宽带真的还有意义么?
- MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决
- dojo中的下拉框
- 要是中国少些你们这样的爱国贼
- Opencv教程基础篇(一)--MFC使用Opencv处理图像
- 无处不在的家
- 1.SQL Server DML触发器之AFTER触发器
- iOS: iOS视图控制器编程指南 目录