使用 NSPredicate 搜索 NSArray
Posted
技术标签:
【中文标题】使用 NSPredicate 搜索 NSArray【英文标题】:Search NSArray using NSPredicate 【发布时间】:2013-10-16 20:53:37 【问题描述】:如果我问愚蠢的问题,我是 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】:你可以这样做:
NSPredicate *userPredicate1 = [NSPredicate predicateWithFormat:@"companyId IN %@", [[self selectedCompanies] valueForKey:@"companiesIdentifier"];
NSLog(@"Users: %@", [[[self userData] users] filteredArrayUsingPredicate:userPredicate1]);
这里发生的情况是,我们获取所有选定公司的companiesIdentifier
,并根据这些标识符匹配用户。
valueForKey:
在数组对象上返回一个数组,其中包含数组中每个对象所需键的值。 IN
是在集合(数组、集合等)中搜索的谓词运算符。
【讨论】:
以上是关于使用 NSPredicate 搜索 NSArray的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSPredicate 搜索 NSDictionaries 的 NSArray 时没有结果
NSArray 上的 NSPredicate 用于搜索任何对象