I have an array of custom objects. The custom object look like this
@interface User : NSObject
@property(nonatomic, strong)NSString *user_Id;
@property(nonatomic, strong)NSString *user_Name;
@property(nonatomic, strong)NSString *user_UserName;
@end
I have to filter the array checking 2 properties.That is if I search a
then it should get list of users filtered from array contains a
in user_Name
or user_Id
.How can i achieve this? For a single property i know[user_Name]
NSString *predicateString = @"user_Name MATCHES[c] %@";
NSString *matchString = [NSString stringWithFormat: @".*%@.*",searchText];
NSPredicate *predicate =[NSPredicate predicateWithFormat:predicateString, matchString];
self.searchResults = [userArray filteredArrayUsingPredicate:predicate];
You can join predicate conditions with OR
, such as:
NSString *predicateString = @"(user_Name MATCHES[c] %@) OR (user_Id MATCHES[c] %@)";
Alternately, you could filter the array by using indexesOfObjectsPassingTest:
with an appropriate test block and then objectsAtIndexes:
to get an array of the objects passing the test.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(user_Name== %@) || (user_Id== %@), <name>, <id>];
Try to use this predicate string
NSString *predicateString = @"user_Name MATCHES[c] %@ OR user_Id MATCHES[c] %@";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With