NSPredicate(謂詞)的一些簡(jiǎn)單的使用方法

1.創(chuàng)建NSPredicate(謂詞)對(duì)象,謂詞對(duì)象中包含了過濾條件

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"過濾條件"];

2.判斷指定的對(duì)象是否滿足NSPredicate創(chuàng)建的過濾條件(可以實(shí)際情況可寫可不寫)

[predicate evaluateWithObject:person]; //返回值為BOOL

3. 使用謂詞條件過濾數(shù)組中的元素艾扮,過濾之后返回查詢的結(jié)果

NSArray *persons = [array filteredArrayUsingPredicate:predicate];

接下來有一些簡(jiǎn)單的使用方法

首先是創(chuàng)造數(shù)據(jù)
-(NSMutableArray *)setUpDataArray
{
    NSDictionary * persondic =[NSDictionary dictionaryWithObjectsAndKeys:@11,@"age",@"豬八戒",@"name", nil];
    NSDictionary * persondic1 =[NSDictionary dictionaryWithObjectsAndKeys:@21,@"age",@"豬無能",@"name", nil];
    NSDictionary * persondic2 =[NSDictionary dictionaryWithObjectsAndKeys:@11,@"age",@"孫悟空",@"name", nil];
    NSDictionary * persondic3 =[NSDictionary dictionaryWithObjectsAndKeys:@11,@"age",@"孫大圣",@"name", nil];
    NSDictionary * persondic4 =[NSDictionary dictionaryWithObjectsAndKeys:@13,@"age",@"孫行者",@"name", nil];
    NSDictionary * persondic5 =[NSDictionary dictionaryWithObjectsAndKeys:@13,@"age",@"唐僧",@"name", nil];
    NSDictionary * persondic6 =[NSDictionary dictionaryWithObjectsAndKeys:@14,@"age",@"沙和尚",@"name", nil];
    NSDictionary * persondic7 =[NSDictionary dictionaryWithObjectsAndKeys:@15,@"age",@"白骨精",@"name", nil];
    NSDictionary * persondic8 =[NSDictionary dictionaryWithObjectsAndKeys:@11,@"age",@"蜘蛛精",@"name", nil];
    NSDictionary * persondic9 =[NSDictionary dictionaryWithObjectsAndKeys:@15,@"age",@"哪吒",@"name", nil];
    NSDictionary * persondic10 =[NSDictionary dictionaryWithObjectsAndKeys:@15,@"age",@"王母",@"name", nil];
    NSDictionary * persondic11 =[NSDictionary dictionaryWithObjectsAndKeys:@16,@"age",@"玉皇大帝",@"name", nil];
    NSArray * personArray =[NSArray arrayWithObjects:persondic,persondic1,persondic2,persondic3,persondic4,persondic5,persondic6,persondic7,persondic8,persondic9,persondic10,persondic11, nil];
      NSMutableArray * dataArray=[[ NSMutableArray alloc]init];
    for(NSDictionary * dic  in personArray){
        Person * person = [[Person alloc]init];
        person.name =dic[@"name"];
        person.age =[dic[@"age"] integerValue];
        [dataArray addObject:person];
    }
    return dataArray;
}

根據(jù)年齡篩選出一些人
     //找出年齡與第一個(gè)人年齡相同的人
      _allDataArray =[self setUpDataArray];
        Person * model = _allDataArray.firstObject;
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age=%ld",model.age];
        NSMutableArray * arrayPredicate = [[NSMutableArray alloc]init];
        for (int j = 0 ; j < _allDataArray.count ; j ++ ) {
            Person * predicatePerson = _allDataArray[j];
            if([predicate evaluateWithObject:predicatePerson]){ //判斷指定的對(duì)象是否滿足
                    [arrayPredicate addObject:predicatePerson];
                }
        }
       NSLog(@"=====%@",arrayPredicate);


 //年齡小于11
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",11];
    //使用謂詞條件過濾數(shù)組中的元素穗泵,過濾之后返回查詢的結(jié)果
    NSArray *filterArray = [ _allDataArray  filteredArrayUsingPredicate:predicate];
    NSLog(@"====%@",filterArray);
根據(jù)年齡篩.png
可以根據(jù)多個(gè)條件同時(shí)滿足篩選出一些人
   //查詢name=孫悟空的并且age等于11
  NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name='孫悟空' && age=11"];
 NSArray *filterArray = [ _allDataArray  filteredArrayUsingPredicate:predicate];
    NSLog(@"====%@",filterArray);

    //IN(包含)
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.name IN {'孫行者','唐僧','豬八戒'} || self.age IN{11,13}"];

可以根據(jù)多個(gè)條件篩選.png
一些模糊篩選
    //name以“孫”開頭的
    predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH '孫'"];

    //name以“精”結(jié)尾的
    predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH '精'"];

    //name中包含字符“大”的
    predicate = [NSPredicate predicateWithFormat:@"name CONTAINS '大'"];

    //like 匹配任意多個(gè)字符
    //name中只要有“大”字符就滿足條件
    predicate = [NSPredicate predicateWithFormat:@"name like '*大*'"];

    //?代表一個(gè)字符悍汛,下面的查詢條件是:name中第二個(gè)字符是“大”的
    predicate = [NSPredicate predicateWithFormat:@"name like '?大'"];
模糊篩選.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宣旱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赠群,更是在濱河造成了極大的恐慌羊始,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件查描,死亡現(xiàn)場(chǎng)離奇詭異突委,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冬三,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門匀油,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勾笆,你說我怎么就攤上這事敌蚜。” “怎么了窝爪?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵弛车,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蒲每,道長(zhǎng)纷跛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任邀杏,我火速辦了婚禮贫奠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淮阐。我一直安慰自己叮阅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布泣特。 她就那樣靜靜地躺著浩姥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪状您。 梳的紋絲不亂的頭發(fā)上勒叠,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天兜挨,我揣著相機(jī)與錄音,去河邊找鬼眯分。 笑死拌汇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弊决。 我是一名探鬼主播噪舀,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼飘诗!你這毒婦竟也來了与倡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤昆稿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后溉潭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體净响,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喳瓣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夫椭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹭秋,死狀恐怖扰付,靈堂內(nèi)的尸體忽然破棺而出仁讨,到底是詐尸還是另有隱情,我是刑警寧澤洞豁,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布盐固,位于F島的核電站,受9級(jí)特大地震影響丈挟,放射性物質(zhì)發(fā)生泄漏刁卜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一曙咽、第九天 我趴在偏房一處隱蔽的房頂上張望蛔趴。 院中可真熱鬧,春花似錦例朱、人聲如沸孝情。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箫荡。三九已至魁亦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羔挡,已是汗流浹背洁奈。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绞灼,地道東北人睬魂。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像镀赌,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子际跪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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

  • 首先商佛,我們需要知道何謂謂詞,讓我們看看官方的解釋:The NSPredicate class is used to...
    旭日飛揚(yáng)閱讀 1,515評(píng)論 0 0
  • 轉(zhuǎn)載自:http://www.cocoachina.com/ios/20160111/14926.html 1姆打、大...
    一筆春秋閱讀 2,840評(píng)論 0 2
  • 站在前輩的肩膀上前行 UIKit框架和Foundation框架 所有的Mac OS X和IOS程序都是由大量的對(duì)象...
    zysmoon閱讀 8,672評(píng)論 0 16
  • 八月份非常有成就感的事情之一良姆,是完整學(xué)習(xí)了《細(xì)草老師攝影美學(xué)素養(yǎng)》課程。四次講解幔戏,四次作業(yè)點(diǎn)評(píng),共八次課程玛追。對(duì)于我...
    繁花塢閱讀 2,184評(píng)論 4 10
  • 祝你歲月無波瀾,敬我余生不悲歡闲延。30歲 生日快樂
    VivianKing閱讀 169評(píng)論 0 0