NSPredicate 官方文档正则表达式

转自:http://blog.sina.com.cn/s/blog_4cd8dd130101ntev.html

概览
nspredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索
您可以使用谓词来表示逻辑条件,用于描述对象持久性存储在内存中的对象过滤。虽然从NSComparisonPredicate,NSCompoundPredicate,和NSExpression的实例直接创建谓词是常见的,但是你会经常用nspredicate的类方法解析的格式字符串来创建谓词。谓词格式字符串的例子包括
简单的比较,比如 grade== "7" 或者 firstNamelike "Shaffiq"
不区分大小写和音调的查找,比如 namecontains[cd] "itroen"
逻辑运算,比如 (firstName like "Mark") OR (lastName like"Adderley")
In OS X v10.5 and later,you can create €œbetween€ predicates suchas datebetween {$YESTERDAY,$TOMORROW}.
您可以创建关系谓词,比如:
group.name like "work*"
ALL children.age > 12
ANY children.age > 12
您可以创建谓词操作,比如@sum.items.price < 1000 。完整语法参考,请参阅“谓词编程指南” 。
您也可以创建包含变量的谓词,那样谓词就可以在运行时(runtime)替换具体值之前预先定义。在os xv10.4,含变量的谓词,估算是一个两步骤的过程 (see predicateWithSubstitutio nVariables:and evaluateWithObject:)。在os x v10.5及以后,你可以使用evaluateWithObject:substitutionVariables:,它结合了这些步骤。
任务
创建谓词:
[plain] view plaincopy
+ predicateWithFormat:
+ predicateWithFormat:argumentArray:
+ predicateWithFormat:arguments:
– predicateWithSubstitutio nVariables:
+ predicateWithValue:
+ predicateWithBlock:
评估一个谓词:
– evaluateWithObject:
– evaluateWithObject:substitutionVariables:
获取字符串表现形式:
– predicateFormat
方法
1.predicateWithBlock:
创建并返回一个谓词,评估使用指定的块对象和绑定的字典。
+ (nspredicate *)predicateWithBlock:(BOOL (^)(id evaluatedobject,NSDictionary *bindings))block;
参数
block
block施加于被评估的对象。
block带有两个参数:
evaluatedobject:被评估的对象。
bindings:替换变量的字典。字典必须包含接收器中所有变量的键值对。
如果evaluatedobject的计算结果为true,该块返回YES,否则为NO 。
返回值
一个评估对象使用了块的谓词。
特殊考虑
在os X v10.6.Core Data在内存和原子存储中支持这个方法,但是基于sqlite的存储是不支持的。
有效性
4.0及以后有效
声明于
nspredicate.h
2.predicateWithFormat:
由给定的格式和解析结果创建一个新的字符串来创建并返回一个新的谓词。
+ (nspredicate *)predicateWithFormat:(Nsstring *)format,...
format:新谓词的格式字符串。
...:以逗号分隔的参数列表。
一个新的谓词,由创建一个新的格式字符串并且解析这个结果(即那个新的格式字符串)所得。
讨论
格式字符串的格式和变量替换的限制,请参阅 Predicate Format String Syntax
IOS 3.0及以后有效。
相关的代码例子
ThreadedCoreData
ToolbarSearch
WeatherMap
nspredicate.h
3.predicateWithFormat:argumentArray:
创建并且返回一个新的谓词,通过把数组里面的值传入到格式字符串中并且解析所得。
+ (nspredicate *)predicateWithFormat:(Nsstring *)predicateFormatargumentArray:(NSArray*)arguments
predicateFormat:新谓词的格式字符串。
arguments:要代入格式字符串的数组。代入的时候数组里的值按照数组里的顺序。
一个新的谓词,通过把数组中的值按顺序代入格式字符串并解析所得。
IOS3.0及以后有效。
4.predicateWithFormat:arguments:
创建并且返回一个新的谓词,通过把参数列表中的参数代入格式字符串中并且解析得到。
argList:代入格式谓词中的内容。参数列表代入顺序即它们出现在列表中的顺序。
一个新的谓词,通过把参数列表中的值按顺序代入格式字符串并解析所得。
5.predicateWithValue:
通过评估一个给定的值来创建并返回一个谓词。
+ (nspredicate *)predicateWithValue:(BOOL)value
value:新谓词需要评估的值。
评估一个值得到的谓词。
实例方法
1.evaluateWithObject:
返回一个给定的BOOL值,用于指示一个给定的对象是否匹配接收者的特殊条件。
- (BOOL)evaluateWithObject:(id)object
objec:接收者评估的对象。
如果对象匹配接收者特殊条件则返回YES,否则NO.
2.evaluateWithObject:substitutionVariables:
返回一个给定的BOOL值,用于指示一个给定的对象在一个给定的变量字典中的值代入后是否匹配接收者的特殊条件。
- (BOOL)evaluateWithObject:(id)objectsubstitutionVariables:(NSDictionary *)variables
variables:替换变量的字典。字典必须包含接收者所有变量的键值对。
全部匹配返回YES,否则NO.
方法和那两个步骤"首先引用接收者的predicateWithSubstitutio nVariables:然后引用返回的谓词的evaluateWithObject:"返回的结果一样。此方法在反复评估不同变量替换的谓词情况下被优化。
3.predicateFormat
返回接收者的格式字符串。
- (Nsstring *)predicateFormat
接收者的格式字符串
用这个方法返回的字符串不能够保证和使用predicateWithFormat:等方法返回的字符串一样。你不能用这个方法来创建一个谓词的持久化表示,但是你可以用它来再现原始谓词。如果你需要一个谓词的持久化表示,你可以创建一个archive(nspredicate采用NSCoding协议)
4.predicateWithSubstitutio nVariables:
通过用给定的替换字典中的值替换接收者的变量,返回接收者的副本。
- (nspredicate *)predicateWithSubstitutio nVariables:(NSDictionary*)variables
variables:替换变量字典。字典必须包含接收者素有变量的键值对。
接收者的值被特殊变量替换所返回的接收者副本。
接收者本身不会被方法所改变,所以你可以重复使用任意数量的替换。
nspredicate.h

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...