iOS中的謂詞NSPredicate

2022-09-03 20:39:11 字數 1655 閱讀 8808

nspredicate的坑,正規表示式無論是否新增「^ 或 $」,系統會自動新增開始字元和結束字元,和我們平常使用的不太一樣,所以要寫出完整的匹配表示式。

nsstring *regex = @"^[\u4e00-\u9fa5a-za-z].*$";

nspredicate *predicate = [nspredicate predicatewithformat:@"self matches %@", regex];

bool isvalid = [predicate evaluatewithobject:self.cardpname];

= , ==: 判斷兩個表示式是否相等

>= , =>: 判斷左邊表示式的值是否大於或等於右邊表示式的值

<= , =<: 判斷左邊表示式的值是否小於或等於右邊表示式的值

>: 判斷左邊表示式的值是否大於右邊表示式的值

<: 判斷左邊表示式的值是否小於右邊表示式的值

!= , <>: 判斷左邊表示式的值是否與右邊表示式的值不相等

nsnumber *test = @(555

);nspredicate *predicate = [nspredicate predicatewithformat:@"

self > 55"];

if([predicate evaluatewithobject:test])

and、&&:邏輯與,要求兩個表示式的值都為yes時,結果才為yes。

or、||:邏輯或,要求其中乙個表示式為yes時,結果就是yes

not、!:邏輯非,對原有的表示式取反

beginswith:檢查字串是否以指定的字串開頭(如判斷字串是否以a開頭:beginswith 'a')

endswith:檢查字串是否以指定的字串結尾(如判斷字串是否以a結尾:endswith 'a')

contains:檢查字串是否包含指定的字串(如判斷字串是否包含a:contains 'a')

like:檢查某個字串是否匹配指定的字串模板。

其之後可以跟?代表乙個字元和*代表任意多個字元兩個萬用字元。

比如"name like '*ac*'",這表示name的值中包含ac則返回yes;

"name like '?a'",表示name的第2個字元為a時返回yes。

matches:檢查某個字串是否匹配指定的正規表示式。雖然正規表示式的執行效率是最低的,但其功能是最強大的,也是我們最常用的。

between :必須滿足表示式 between 的格式,要求該表示式必須大於或等於下限,並小於或等於上限。

in :必須滿足表示式 in 的格式,要求該表示式必須包含有{}中的任一元素。

any , some : 集合中任意乙個元素滿足條件,就返回yes

all : 集合所有元素滿足條件,才返回yes

none : 集合中沒有任何元素元素滿足條件,就返回yes

false、no:代表邏輯假

true、yes:代表邏輯真

null、nil:代表空值

self:代表正在被判斷的物件自身

iOS中謂詞的使用

cocoa提供了乙個類nspredicate類,該類主要用於指定過濾器的條件,該物件可以準確的描述所需條件,對每個物件通過謂詞進行篩選,判斷是否與條件相匹配。謂詞表示計算真值或假值的函式。在cocoa中封裝的乙個資料庫框架cocoadata裡面 在進行查詢 包括模糊查詢 時同樣會要用到謂詞 下面對謂...

ios 謂詞的使用

剛入行的小女人,希望以後大家多多關照,把每天學到的知識記錄下,方便以後使用,有不對的地方希望大家多多指點,小女感激不盡。今天剛剛學了謂詞的使用,記錄下。返回乙個符合謂詞條件的陣列 nsarray newarray array filteredarrayusingpredicate predicate...

iOS謂詞的簡單使用

謂詞 條件篩選 nsstring adc 123 判斷字串是不是以xx開頭 yes是 bool result adc hasprefix 1 判斷字串是不是以xx結尾 adc hassuffix 3 nslog d result 謂詞 用法接近於sqlite都是通過對應的語句來進行篩選和查詢 建立謂...