我有一个名为charactersAndDescriptions的数组,其中包含多个数组,并且每个数组中都有一个带有两个键/值的NSDictionary。它看起来像这样:
我需要在键的值上过滤此数组' desc,'将它与字符串变量searchText进行比较(它应返回结果,其中该字符串存在于desc中的任何位置)。我希望返回的结构与原始结构相同 - 包含数组内字典的数组。这是我的代码:
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"desc contains[c] %@", searchText];
self.resultsArray = [self.charactersAndDescriptions filteredArrayUsingPredicate:resultPredicate];
问题是,self.resultsArray总是返回0个对象。我不明白为什么会这样。我在这里看问题,他们只有一个字典数组但是找不到任何嵌套数组。希望你能帮忙,谢谢!
答案 0 :(得分:3)
我不确定你是否可以用一个谓词来做。但是您可以遍历各个字典数组,过滤它们并将过滤后的列表添加到最终数组中。尝试这样的事情:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"desc contains[c] %@", searchText];
NSMutableArray *finalColletion = [NSMutableArray array];
for (NSArray *temp in self.charactersAndDescriptions) {
NSArray *result =[temp filteredArrayUsingPredicate:predicate];
if([result count] > 0) {
[finalColletion addObject:result];
}
}