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都是通過對應的語句來進行篩選和查詢 建立謂...