使用NSPredicate搜索NSArray

时间:2013-10-16 20:53:38

标签: iphone objective-c core-data nspredicate

我是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]);

1 个答案:

答案 0 :(得分:1)

你可以这样做:

NSPredicate *userPredicate1 = [NSPredicate predicateWithFormat:@"companyId IN %@", [[self selectedCompanies] valueForKey:@"companiesIdentifier"];
NSLog(@"Users: %@", [[[self userData] users] filteredArrayUsingPredicate:userPredicate1]);

这里发生的是我们选择所有选定公司的companiesIdentifier并根据这些标识符匹配用户。

数组对象上的

valueForKey:返回一个数组,其中包含数组中每个对象所需键的值。 IN是一个在集合中搜索的谓词运算符(数组,集等)。