Cocoa过滤器NSPredicate的完全用法
来源:互联网 发布:主机屋域名绑定 编辑:程序博客网 时间:2024/06/05 05:08
从下面的各个例子中,可以体会到NSPredicate的强大的能力,作为正则表达式的核心类,确实优化了很多的字符串及其正则相关的操作的流程。使代码简洁,而强大!
- Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询
- 计算谓词:
- //基本的查询
- NSPredicate *predicate;
- predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];
- BOOL match = [predicate evaluateWithObject: car];
- NSLog (@"%s", (match) ? "YES" : "NO");
- //在整个cars里面循环比较
- predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];
- NSArray *cars = [garage cars];
- for (Car *car in [garage cars]) {
- if ([predicate evaluateWithObject: car]) {
- NSLog (@"%@", car.name);
- }
- }
- //输出完整的信息
- predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];
- NSArray *results;
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- //含有变量的谓词
- NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];
- NSDictionary *varDict;
- varDict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"Herbie", @"NAME", nil];
- predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];
- NSLog(@"SNORGLE: %@", predicate);
- match = [predicate evaluateWithObject: car];
- NSLog (@"%s", (match) ? "YES" : "NO");
- //注意不能使用$VARIABLE作为路径名,因为它值代表值
- //谓词字符窜还支持c语言中一些常用的运算符
- predicate = [NSPredicate predicateWithFormat:
- @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"oop %@", results);
- predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", [results valueForKey: @"name"]);
- //强大的数组运算符
- predicate = [NSPredicate predicateWithFormat:
- @"engine.horsepower BETWEEN { 50, 200 }"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- NSArray *betweens = [NSArray arrayWithObjects:
- [NSNumber numberWithInt: 50], [NSNumber numberWithInt: 200], nil];
- predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];
- varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];
- predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- //IN运算符
- predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", [results valueForKey: @"name"]);
- predicate = [NSPredicate predicateWithFormat: @"SELF.name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", [results valueForKey: @"name"]);
- names = [cars valueForKey: @"name"];
- predicate = [NSPredicate predicateWithFormat: @"SELF IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];
- results = [names filteredArrayUsingPredicate: predicate];//这里限制了SELF的范围
- NSLog (@"%@", results);
- //BEGINSWITH,ENDSWITH,CONTAINS
- //附加符号,[c],[d],[cd],c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分
- predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- //LIKE运算符(通配符)
- predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
- predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];
- results = [cars filteredArrayUsingPredicate: predicate];
- NSLog (@"%@", results);
0 0
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- Cocoa过滤器NSPredicate的完全用法
- NSPredicate的完全用法
- Cocoa过滤器NSPredicate
- Cocoa过滤器NSPredicate入门使用
- NSPredicate过滤器 用法
- 正则表达式 NSPredicate 的完全用法
- OC- 使用cocoa的NSPredicate查询搜索
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- 矩阵相关运算代码实现
- solr 自定义QueryParser 用户查询解析方案
- chrome插件开发
- 数据分析师8步法
- Activiti入门学习demo_2_简单的流程
- Cocoa过滤器NSPredicate的完全用法
- cocoaPods 1.1.0 使用
- firewalld对指定IP开放指定端口的配置
- poj 2823 Sliding Windows 线段树|单调队列
- iOS最完美的UITextField中输入金额,只能输入数字和小数点,保留两位小数点且0放在首位
- C Tricks(十三)—— trim 的实现
- Zookeeper启动抛出“Invalid arguments, exiting abnormally”异常
- MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。
- sql怎么把查询出的记录插入到另一张表中