iOS知識(shí)梳理:謂詞NSPredicate

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á)式吧...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容