0

如果我问愚蠢的问题,我是 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]);
4

1 回答 1

1

你可以做:

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

这里发生的情况是,我们从companiesIdentifier所有选定的公司中提取并根据这些标识符匹配用户。

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

于 2013-10-16T20:58:52.873 回答