NSPredicate類是用來定義邏輯條件約束的獲取或內(nèi)存中的過濾搜索.
說白了就是一個(gè)過濾條件,比如,"小于4","大于5"之類的.
首先是一個(gè)例子,,,在一個(gè)裝了很多Person類實(shí)例的數(shù)組里,用謂詞來過濾年齡小于30的
//年齡小于30
//定義謂詞對(duì)象,謂詞對(duì)象中包含了過濾條件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];
//使用謂詞條件過濾數(shù)組中的元素,過濾之后返回查詢的結(jié)果
NSArray *array = [persons filteredArrayUsingPredicate:predicate];
常用的一些Format的寫法:
//名字等于1且age大于40
@"name = '1' && age>40"
//in包含
@"self.name IN {'1','2','3'} || self.age IN{30,40}"
//name以a開頭
@"name BEGINSWITH 'a'"
//name以ba結(jié)尾
@"name ENDSWITH 'ba'"
//name包含字符a
@"name CONTAINS 'a'"
//*表示多個(gè)字符,只要有s就可以
@"name like '*s*'"
//?表示一個(gè)字符,那么第二個(gè)字符必須是s
@"name like '?s'"
更加精細(xì)的總結(jié).
1.比較運(yùn)算符
- =、==:判斷兩個(gè)表達(dá)式是否相等,在謂詞中=和==是相同的意思都是判斷,而沒有賦值這一說
- ( >=,=> ):判斷左邊表達(dá)式的值是否大于或等于右邊表達(dá)式的值
- <=,=<:判斷右邊表達(dá)式的值是否小于或等于右邊表達(dá)式的值
- ( > ):判斷左邊表達(dá)式的值是否大于右邊表達(dá)式的值
- ( < ):判斷左邊表達(dá)式的值是否小于右邊表達(dá)式的值
- !=、<>:判斷兩個(gè)表達(dá)式是否不相等
- BETWEEN:BETWEEN表達(dá)式必須滿足表達(dá)式 BETWEEN {下限,上限}的格式,要求該表達(dá)式必須大于或等于下限,并小于或等于上限
2.邏輯運(yùn)算符
- AND、&&:邏輯與,要求兩個(gè)表達(dá)式的值都為YES時(shí),結(jié)果才為YES。
- OR、||:邏輯或,要求其中一個(gè)表達(dá)式為YES時(shí),結(jié)果就是YES
- NOT、 !:邏輯非,對(duì)原有的表達(dá)式取反
3.字符串比較運(yùn)算符
- BEGINSWITH:檢查某個(gè)字符串是否以指定的字符串開頭(如判斷字符串是否以a開頭:BEGINSWITH 'a')
- ENDSWITH:檢查某個(gè)字符串是否以指定的字符串結(jié)尾
- CONTAINS:檢查某個(gè)字符串是否包含指定的字符串
- LIKE:檢查某個(gè)字符串是否匹配指定的字符串模板。其之后可以跟?代表一個(gè)字符和代表任意多個(gè)字符兩個(gè)通配符。比如"name LIKE 'ac'",這表示name的值中包含ac則返回YES;"name LIKE '?ac'",表示name的第2、3個(gè)字符為ac時(shí)返回YES。
- MATCHES:檢查某個(gè)字符串是否匹配指定的正則表達(dá)式。雖然正則表達(dá)式的執(zhí)行效率是最低的,但其功能是最強(qiáng)大的,也是我們最常用的。
4.集合運(yùn)算
- ANY、SOME:集合中任意一個(gè)元素滿足條件,就返回YES。
- ALL:集合中所有元素都滿足條件,才返回YES。
- NONE:集合中沒有任何元素滿足條件就返回YES。如:NONE person.age < 18,表示person集合中所有元素的age>=18時(shí),才返回YES。
- IN:等價(jià)于SQL語句中的IN運(yùn)算符
5.直接量
- FALSE、NO:代表邏輯假
- TRUE、YES:代表邏輯真
- NULL、NIL:代表空值
- SELF:代表正在被判斷的對(duì)象自身
- "string"或'string':代表字符串
- 數(shù)組:和c中的寫法相同,如:{'one', 'two', 'three'}。
- 數(shù)值:包括證書、小數(shù)和科學(xué)計(jì)數(shù)法表示的形式
- 十六進(jìn)制數(shù):0x開頭的數(shù)字
- 八進(jìn)制:0o開頭的數(shù)字
- 二進(jìn)制:0b開頭的數(shù)字
6.保留字
下列單詞都是保留字(不論大小寫)
AND、OR、IN、NOT、ALL、ANY、SOME、NONE、LIKE、CASEINSENSITIVE、CI、MATCHES、CONTAINS、BEGINSWITH、ENDSWITH、BETWEEN、NULL、NIL、SELF、TRUE、YES、FALSE、NO、FIRST、LAST、SIZE、ANYKEY、SUBQUERY、CAST、TRUEPREDICATE、FALSEPREDICATE
實(shí)際使用中.謂詞經(jīng)常配合正則表達(dá)式來做一些比如判斷電話號(hào)碼,或是郵件地址等等的操作...之后再來說正則表達(dá)式吧...