簡體   English   中英

在ios中過濾數組,檢查多個屬性

[英]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_Nameuser_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM