我是NSPredicate的新手,很抱歉,如果我问的是愚蠢的问题。我有两个NSArray(keyArray和valueArray)。我必须使用keyArray在valueArray中找到匹配项。下面的代码工作正常,但我必须逐个搜索。任何使用不同键阵列搜索数组的方法。
NSPredicate *userPredicate = [NSPredicate predicateWithFormat:@"companyId = %@", [[[self selectedCompanies] objectAtIndex:0] companiesIdentifier]];
NSLog(@"Users: %@", [[[self userData] users] filteredArrayUsingPredicate:userPredicate]);
NSPredicate *userPredicate1 = [NSPredicate predicateWithFormat:@"companyId = %@", [[[self selectedCompanies] objectAtIndex:1] companiesIdentifier]];
NSLog(@"Users: %@", [[[self userData] users] filteredArrayUsingPredicate:userPredicate1]);
答案 0 :(得分:1)
你可以这样做:
NSPredicate *userPredicate1 = [NSPredicate predicateWithFormat:@"companyId IN %@", [[self selectedCompanies] valueForKey:@"companiesIdentifier"];
NSLog(@"Users: %@", [[[self userData] users] filteredArrayUsingPredicate:userPredicate1]);
这里发生的是我们选择所有选定公司的companiesIdentifier
并根据这些标识符匹配用户。
valueForKey:
返回一个数组,其中包含数组中每个对象所需键的值。 IN
是一个在集合中搜索的谓词运算符(数组,集等)。