[英]How to search and filter multiple array data items in search bar in iOS swift 3.0 version
[英]Filter array in ios checking multiple properties
我有一系列自定義對象。 自定義對象看起來像這樣
@interface User : NSObject
@property(nonatomic, strong)NSString *user_Id;
@property(nonatomic, strong)NSString *user_Name;
@property(nonatomic, strong)NSString *user_UserName;
@end
我必須過濾數組檢查2個屬性。那就是如果我搜索a
那么它應該得到從數組中過濾的用戶列表包含a
in user_Name
或user_Id
我怎么能實現這個? 對於單個屬性,我知道[user_Name]
NSString *predicateString = @"user_Name MATCHES[c] %@";
NSString *matchString = [NSString stringWithFormat: @".*%@.*",searchText];
NSPredicate *predicate =[NSPredicate predicateWithFormat:predicateString, matchString];
self.searchResults = [userArray filteredArrayUsingPredicate:predicate];
您可以使用OR
連接謂詞條件 ,例如:
NSString *predicateString = @"(user_Name MATCHES[c] %@) OR (user_Id MATCHES[c] %@)";
或者,您可以使用indexesOfObjectsPassingTest:
使用適當的測試塊來過濾數組,然后使用indexesOfObjectsPassingTest:
objectsAtIndexes:
來獲取通過測試的對象數組。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(user_Name== %@) || (user_Id== %@), <name>, <id>];
嘗試使用此謂詞字符串
NSString *predicateString = @"user_Name MATCHES[c] %@ OR user_Id MATCHES[c] %@";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.