[ iOS ] searchbar 查詢

searchbar 查詢

NSPredicate *p = [NSPredicate predicateWithFormat:@"description contains[cd] %@", searchBar.text];
items = [springs filteredArrayUsingPredicate:p];


  • @"description contains[cd] %@"

description 是 plist裡面的欄位名稱 必須要一致


  •  等於某數值:

 @"gender <= %@", @(1) 表示gender欄位的值要是<=1

在查詢時候最好都要用%@ 因為字典物件裡面都是物件 ,如果要查詢數值 就把數值用@包起來成為物件來查詢


  • 同時要查詢多種欄位:


建立多個NSPredicate

NSPredicate *p1 = [NSPredicate predicateWithFormat:@"description contains[cd] %@", searchBar.text];
NSPredicate *p2 = [NSPredicate predicateWithFormat:@"description contains[cd] %@", searchBar.text];
NSPredicate *p3 = [NSPredicate predicateWithFormat:@"description contains[cd] %@", searchBar.text];

NSPredicate *p = [NSPredicate orPredicateWithSubpredicates:@[p1,p2,p3]];

items = [springs filteredArrayUsingPredicate:p];



  • or and 同時運作
p1,p2聯集再與p3聯集

NSPredicate *pOR = [NSPredicate orPredicateWithSubpredicates:@[p1,p2]];
NSPredicate *pAND = [NSPredicate orPredicateWithSubpredicates:@[pOR,pAND]];

items = [springs filteredArrayUsingPredicate:p];



-------- [cd]
c : case-insenstive 大小寫不敏感
d : diacritic-insenstive 讀音不敏感 例如不同語言的e 有不同打法

留言