標籤:
Cocoa提供了一個類NSPredicate類,該類主要用於指定過濾器的條件,該對象可以準確的描述所需條件,對每個對象通過謂詞進行篩選,判斷是否與條件相匹配。謂詞表示計算真值或假值的函數。在cocoa中封裝的一個資料庫架構cocoaData裡面 在進行查詢(包括模糊查詢)時同樣會要用到謂詞;下面對謂詞的使用方法及規則進行簡要的介紹下:
1,用predicateWithFormat建立一個謂詞
NSString *predicateString [email protected]"name==‘Herbie‘"
NSString *predicateString [email protected]"engine.horsepower > 150" 屬性值
NSString *predicateString [email protected]"(engine.horsepower > 50) AND (engine.horsepower < 200)";可以運用運算子
NSString *predicateString [email protected]"engine.horsepower BETWEEN { 50, 200 }";這裡可以運用between關鍵字。和上面效果一樣
NSString *predicateString [email protected]"name IN { ‘Herbie‘, ‘Snugs‘, ‘Badger‘, ‘Flap‘ }";包含在其中用IN
NSString *predicateString [email protected]"name BEGINSWITH ‘Bad‘";字串運算子BEGINSWITH,ENDSWITH,CONTAINS[c][d][cd]
BEGINSWITH:檢查某個字串是否以另一個字串開頭。
ENDSWITH:檢查某個字串是否以另一個字串結尾。
CONTAINS:檢查某個字串是否以另一個字串內部。
[c]不區分大小寫[d]不區分發音符號即沒有重音符號[cd]既不區分大小寫,又不區分發音符號。
NSPredicate *predicate=[NSPredicate predicateWithFormat:predicateString]
results = [cars filteredArrayUsingPredicate: predicate];
NSLog (@"%@", results);
predicate = [NSPredicate predicateWithFormat:@"name LIKE[cd] ‘*er*‘"];//*代表萬用字元Like還接受[cd].
results = [cars filteredArrayUsingPredicate: predicate];
NSLog (@"%@", results);
predicate = [NSPredicate predicateWithFormat:@"name LIKE[cd] ‘???er*‘"];//?只匹配一個字元並且還可以接受[cd].
results = [cars filteredArrayUsingPredicate: predicate];
NSLog (@"%@", results);
iOS中謂詞的使用