7

カスタムオブジェクトの配列があります。カスタムオブジェクトは次のようになります

@interface User : NSObject
@property(nonatomic, strong)NSString *user_Id;
@property(nonatomic, strong)NSString *user_Name;
@property(nonatomic, strong)NSString *user_UserName;
@end

2つのプロパティをチェックして配列をフィルタリングする必要があります。つまり、検索すると、またはaに含まれる配列からフィルタリングされたユーザーのリストが取得されます。これを実現するにはどうすればよいですか?単一のプロパティについて、私は知っています[user_Name]auser_Nameuser_Id

NSString *predicateString = @"user_Name MATCHES[c] %@";
NSString *matchString =  [NSString stringWithFormat: @".*%@.*",searchText];
NSPredicate *predicate =[NSPredicate predicateWithFormat:predicateString, matchString];
self.searchResults = [userArray filteredArrayUsingPredicate:predicate];
4

3 に答える 3

3

OR述語条件は、次のように結合できます。

NSString *predicateString = @"(user_Name MATCHES[c] %@) OR (user_Id MATCHES[c] %@)";

indexesOfObjectsPassingTest:または、適切なテストブロックを使用して配列をフィルタリングしobjectsAtIndexes:、テストに合格したオブジェクトの配列を取得することもできます。

于 2013-03-23T04:06:31.123 に答える
1
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(user_Name== %@) || (user_Id== %@), <name>,  <id>];
于 2013-03-23T04:06:49.807 に答える
1

この述語文字列を使用してみてください

NSString *predicateString = @"user_Name MATCHES[c] %@ OR user_Id MATCHES[c] %@";
于 2013-03-23T04:07:08.463 に答える