iOS NSPredicate的學習講解

2021-09-25 00:19:09 字數 1966 閱讀 4109

ios predicate 即謂詞邏輯。和資料庫的sql語句具有相似性,都是從資料堆中根據條件進行篩選。

1.使用場景:        

(1)nspredicate給我留下最深印象的是兩個陣列求交集的乙個需求,如果按照一般寫法,需要2個遍歷,但nsarray提供了乙個filterusingpredicate的方法,用了nspredicate,就可以不用遍歷!

(2)在儲存自定義物件的陣列中,可以根據條件查詢陣列中滿足條件的物件。

2.首先熟悉predicate:

nsarray *array1 = [nsarray arraywithobjects:@1,@2,@3,@5,@5,@6,@7, nil];

nsarray *array2 = [nsarray arraywithobjects:@4,@5, nil];

// 表示篩選array1在array2中的元素!yes!其中self指向filteredarrayusingpredicate的呼叫者。

/*測試方案:

nspredicate *predicate1 = [nspredicate predicatewithformat:@"self  in %@",array2];

nsarray *temp1 = [array1 filteredarrayusingpredicate:predicate1];

//表示array1在array2中元素

結果:2015-11-08 10:55:19.879 nspredicatedemo[11595:166012] obj ==5

2015-11-08 10:55:19.879 nspredicatedemo[11595:166012] obj ==5

nspredicate *predicate2 = [nspredicate predicatewithformat:@"self  in %@",array1];

nsarray *temp1 = [array2 filteredarrayusingpredicate:predicate1];

結果:2015-11-08 10:55:19.879 nspredicatedemo[11595:166012] obj ==5

(3)字串本身:self

(4)字串相關:beginswith、endswith、contains

例:@"name contain[cd] 'ang'"  //包含某個字串

@"name beginswith[c] 'sh'"    //以某個字串開頭

@"name endswith[d] 'ang'"      //以某個字串結束

注:[c]不區分大小寫[d]不區分發音符號即沒有重音符號[cd]既不區分大小寫,也不區分發音符號。

(5)萬用字元:like

例:@"name like[cd] '*er*'"    //*代表萬用字元,like也接受[cd].

container of 的的的原理

另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...

存在的就是合理的,發生的即是必然的。

筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...

Apache的rewrite的重寫相關的引數

apache mod rewrite規則重寫的標誌一覽 使用mod rewrite時常用的伺服器變數 rewriterule規則表示式的說明 匹配任何單字元 chars 匹配字串 chars chars 不匹配字串 chars text1 text2 可選擇的字串 text1或text2 匹配0到1...