iOS中NSPredicate的簡(jiǎn)單學(xué)習(xí)

1、常用創(chuàng)建方式

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

2、Format:的格式

2.1 比較運(yùn)算符 >,<,==,>=,<=,!=

// 說明:Person類要自己寫,這里就不貼代碼了

 Person *p1 = [[Person alloc] initWithName:@"test1" AndAge:12];

Person *p2 = [[Person alloc] initWithName:@"test2" AndAge:23];

Person *p3 = [[Person alloc] initWithName:@"test3" AndAge:101];

Person *p4 = [[Person alloc] initWithName:@"test4" AndAge:120];

NSArray *arr = @[p1,p2,p3,p4];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age>100&&name=='test4'"];
// 注意這個(gè)語法里面字符串要用單引號(hào)

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印輸出結(jié)果
NSLog(@"%@",result);

2.2 范圍運(yùn)算符,in(則表示在后面的{}中是否包含),between(在某個(gè)范圍內(nèi),如:age between{15,25}等價(jià)于 15<=age<=25)

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age between {15,25}"];
或者
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name in {'test1','test2'}"];

2.3 對(duì)象本身self 如@"self == 'apple'"(也可以是NSNumber)

 NSArray *arr = @[@"ss",@"dddd",@"apple"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self == 'apple'"];
// 注意這個(gè)語法里面字符串要用單引號(hào)

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印輸出結(jié)果:apple

2.4 字符串相關(guān)

:BEGINSWITH、ENDSWITH、CONTAINS
例:@"name CONTAINS[cd] 'ang'" //包含某個(gè)字符串
@"name BEGINSWITH[c] 'sh'" //以某個(gè)字符串開頭
@"name ENDSWITH[d] 'ang'" //以某個(gè)字符串結(jié)束

NSArray *arr = @[@"yangjie",@"zhangsan",@"lisi"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains[cd] 'ng'"];

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self beginswith[c] 'y'"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self endswith[d] 'i'"];


// 注意這個(gè)語法里面字符串要用單引號(hào)

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印輸出結(jié)果
NSLog(@"%@",result);

2.5通配符:LIKE

例:@"name LIKE[cd] 'er'" //代表通配符,Like也接受[cd].
@"name LIKE[cd] '???er
'"

NSArray *arr = @[@"yangjie",@"zhangsan",@"lisi",@"ang",@"tangddd",@"fangxxx"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self like[cd] 'ang*'"];
// 注意這個(gè)語法里面字符串要用單引號(hào)

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印輸出結(jié)果
NSLog(@"%@",result);

2.6正則表達(dá)式:MATCHES

例:NSString *regex = @"^A.+e$"; //以A開頭,e結(jié)尾
@"name MATCHES %@",regex

最后編輯于
?著作權(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)容

  • IOS NSPredicate 查詢、搜索簡(jiǎn)述:Cocoa框架中的NSPredicate用于查詢,原理和用法都類似...
    Tanyfi閱讀 867評(píng)論 0 0
  • NSPredicate是什么 NSPredicate:謂詞 字面翻譯是這個(gè)意思,但是我覺得謂詞這個(gè)詞太難以理解了 ...
    Aiana閱讀 1,546評(píng)論 0 1
  • 簡(jiǎn)述:Cocoa框架中的NSPredicate用于查詢,原理和用法都類似于SQL中的where,作用相當(dāng)于數(shù)據(jù)庫(kù)的...
    wylei閱讀 632評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,992評(píng)論 19 139
  • 父親話不多,尤其是和我這個(gè)兒子相處的時(shí)候,我估計(jì)全天下的父親和兒子差不多都那樣吧,做兒子的似乎也已經(jīng)...
    做自己的思想家閱讀 321評(píng)論 0 1