NSPredicate類是用來(lái)定義邏輯條件約束的,通過(guò)定義邏輯條件進(jìn)行查詢與過(guò)濾脐供。
基本語(yǔ)法
比較運(yùn)算符
比較運(yùn)算符 >
<
==
>=
<=
!=
// 比較運(yùn)算符 > , < , == , >= , <= , !=
// 運(yùn)算符還可以跟邏輯運(yùn)算符一起使用芯肤,&& , || ,AND, OR 謂詞不區(qū)分大小寫(xiě)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age == %ld" ,[text integerValue]];
范圍運(yùn)算符(不區(qū)分大小寫(xiě))
范圍運(yùn)算符:IN
BETWEEN
//范圍運(yùn)算符:IN鲫忍、BETWEEN
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age in{ 40, 50}" ,[text integerValue]]; //age == 40 age == 50
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN{ 40, 50}" ,[text integerValue]]; // 40 <= age <= 50
字符串本身符
一般通過(guò)謂詞(NSPredicate)驗(yàn)證正則表達(dá)式時(shí)使用
字符串本身:SELF
//字符串本身:SELF
NSArray *array=[NSArray arrayWithObjects: @"abc", @"def", @"ghi",@"jkl", nil nil];
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF=='abc'"];
NSArray *array2 = [array filteredArrayUsingPredicate:pre];
過(guò)濾字符
過(guò)濾字符相關(guān):BEGINSWITH
以···開(kāi)始凯沪、ENDSWITH
以···結(jié)尾、CONTAINS
包含
//字符串相關(guān):BEGINSWITH 以···開(kāi)始峻堰、ENDSWITH 以···結(jié)尾、CONTAINS 包含
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@" ,text];
注:[c]
不區(qū)分大小寫(xiě) [d]
不區(qū)分發(fā)音符號(hào)即沒(méi)有重音符號(hào) [cd]
既不區(qū)分大小寫(xiě)盅视,也不區(qū)分發(fā)音符號(hào)捐名。
模糊過(guò)濾字符
通配符:LIKE
*
代表通配符Like還接受[cd]
?
只匹配一個(gè)字符并且還可以接受[cd]
.
//通配符:LIKE *代表通配符Like還接受[cd] ?只匹配一個(gè)字符并且還可以接受[cd].
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self LIKE '?z'"];
self.predicateArr = [[NSArray arrayWithObjects:@"az", @"zzz", @"zaa", @"arw", nil] filteredArrayUsingPredicate:predicate];
正則表達(dá)式
正則表達(dá)式:MATCHES
正則表達(dá)式:MATCHES
NSString *phoneRegex = @"^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\\d{8}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
//判斷指定的對(duì)象是否滿足NSPredicate創(chuàng)建的過(guò)濾條件
[phoneTest evaluateWithObject:@"手機(jī)字符串"];
代碼示例
//創(chuàng)建NSPredicate(相當(dāng)于創(chuàng)建一個(gè)過(guò)濾條件)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@" ,text];
//過(guò)濾出符合條件的對(duì)象(返回所有符合條件的對(duì)象)
self.predicateArr = [self.mutArr filteredArrayUsingPredicate:predicate];