iOS中的謂詞(NSPredicate)使用

1.NSNumber *testNumber = @123;

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF = 123"];

if ([predicate evaluateWithObject:testNumber]) {

NSLog(@"testString:%@", testNumber);

}

2.NSNumber *testNumber = @123;

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BETWEEN {100, 200}"];

if ([predicate evaluateWithObject:testNumber]) {

NSLog(@"testString:%@", testNumber);

} else {

NSLog(@"不符合條件");

}

3.NSArray *testArray = @[@1, @2, @3, @4, @5, @6];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF > 2 && SELF < 5"];

NSArray *filterArray = [testArray filteredArrayUsingPredicate:predicate];

NSLog(@"filterArray:%@", filterArray);

4.NSArray *filterArray = @[@"ab", @"abc"];

NSArray *array = @[@"a", @"ab", @"abc", @"abcd"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)", filterArray];

NSLog(@"%@", [array filteredArrayUsingPredicate:predicate]);

5.ZLPersonModel *sunnyzl = [ZLPersonModel personWithName:@"sunnyzl" age:29 sex:ZLPersonSexMale];

ZLPersonModel *jack = [ZLPersonModel personWithName:@"jack" age:22 sex:ZLPersonSexMale];

//? 首先我們來看一些簡單的使用

//? 1.判斷姓名是否是以s開頭的

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"name LIKE 's*'"];

//? 輸出為:sunnyzl:1, jack:0

NSLog(@"sunnyzl:%d, jack:%d", [pred1 evaluateWithObject:sunnyzl], [pred1 evaluateWithObject:jack]);

//? 2.判斷年齡是否大于25

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"age > 25"];

//? 輸出為:sunnyzl的年齡是否大于25:1, jack的年齡是否大于25:0

NSLog(@"sunnyzl的年齡是否大于25:%d, jack的年齡是否大于25:%d", [pred2 evaluateWithObject:sunnyzl], [pred2 evaluateWithObject:jack]);

6.- (BOOL)checkPhoneNumber:(NSString *)phoneNumber

{

NSString *regex = @"^[1][3-8]\\d{9}$";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

return [pred evaluateWithObject:phoneNumber];

}

7.(有點(diǎn)瑕疵)- (BOOL)checkSpecialCharacter:(NSString *)string

{

NSString *regex = @"[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'谜叹。燕酷,呆抑、夹孔?]";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

return [pred evaluateWithObject:string];

}

8.NSMutableArray *arrayM = [@[@20, @40, @50, @30, @60, @70] mutableCopy];

//? 過濾大于50的值

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF > 50"];

[arrayM filterUsingPredicate:pred1];

NSLog(@"arrayM:%@", arrayM);

NSArray *array = @[[ZLPersonModel personWithName:@"Jack" age:20 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Rose" age:22 sex:ZLPersonSexFamale],

[ZLPersonModel personWithName:@"Jackson" age:30 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Johnson" age:35 sex:ZLPersonSexMale]];

//? 要求取出包含‘son’的元素

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"name CONTAINS 'son'"];

NSArray *newArray = [array filteredArrayUsingPredicate:pred2];

NSLog(@"%@", newArray);

9.NSArray *filterArray = @[@"ab", @"abc"];

NSArray *array = @[@"a", @"ab", @"abc", @"abcd"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)", filterArray];

NSLog(@"%@", [array filteredArrayUsingPredicate:predicate]);

10.NSArray *array = @[[ZLPersonModel personWithName:@"Jack" age:20 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Rose" age:22 sex:ZLPersonSexFamale],

[ZLPersonModel personWithName:@"Jackson" age:30 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Johnson" age:35 sex:ZLPersonSexMale]];

//? 定義一個(gè)property來存放屬性名办陷,定義一個(gè)value來存放值

NSString *property = @"name";

NSString *value = @"Jack";

//? 該謂詞的作用是如果元素中property屬性含有值value時(shí)就取出放入新的數(shù)組內(nèi),這里是name包含Jack

NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K CONTAINS %@", property, value];

NSArray *newArray = [array filteredArrayUsingPredicate:pred];

NSLog(@"newArray:%@", newArray);

//? 創(chuàng)建謂詞,屬性名改為age踊挠,要求這個(gè)age包含$VALUE字符串

NSPredicate *predTemp = [NSPredicate predicateWithFormat:@"%K > $VALUE", @"age"];

// 指定$SUBSTR的值為 25? ? 這里注釋中的$SUBSTR改為$VALUE

NSPredicate *pred1 = [predTemp predicateWithSubstitutionVariables:@{@"VALUE" : @25}];

NSArray *newArray1 = [array filteredArrayUsingPredicate:pred1];

NSLog(@"newArray1:%@", newArray1);

//? 修改 $SUBSTR的值為32,? 這里注釋中的SUBSTR改為$VALUE

NSPredicate *pred2 = [predTemp predicateWithSubstitutionVariables:@{@"VALUE" : @32}];

NSArray *newArray2 = [array filteredArrayUsingPredicate:pred2];

NSLog(@"newArray2:%@", newArray2);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末适肠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子候引,更是在濱河造成了極大的恐慌侯养,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澄干,死亡現(xiàn)場離奇詭異逛揩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)麸俘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門辩稽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人从媚,你說我怎么就攤上這事逞泄。” “怎么了拜效?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵炭懊,是天一觀的道長。 經(jīng)常有香客問我拂檩,道長,這世上最難降的妖魔是什么嘲碧? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任稻励,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘望抽。我一直安慰自己加矛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布煤篙。 她就那樣靜靜地躺著斟览,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辑奈。 梳的紋絲不亂的頭發(fā)上苛茂,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音鸠窗,去河邊找鬼妓羊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稍计,可吹牛的內(nèi)容都是我干的躁绸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼臣嚣,長吁一口氣:“原來是場噩夢啊……” “哼净刮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硅则,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淹父,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抢埋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弹灭,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年揪垄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了穷吮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饥努,死狀恐怖捡鱼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酷愧,我是刑警寧澤驾诈,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站溶浴,受9級(jí)特大地震影響乍迄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜士败,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一闯两、第九天 我趴在偏房一處隱蔽的房頂上張望褥伴。 院中可真熱鬧,春花似錦漾狼、人聲如沸重慢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽似踱。三九已至,卻和暖如春稽煤,著一層夾襖步出監(jiān)牢的瞬間核芽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工念脯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狞洋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓绿店,卻偏偏與公主長得像吉懊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子假勿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

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