嘿stackoverflow社区, 我有一个问题让NSPredicate按照我的意愿工作。我有一个从plist填充的数组,以及从一些Google Places JSON数据填充的数组。长话短说,如果谷歌存在,我需要检查我的plist数组。为此我使用NSPredicate。我的代码部分有效,例如它会在两个列表中找到“McDonalds”,但未能找到“Jimmy John's”。我注意到的一件事是在我的plist中它被称为“Jimmy John's”,在Google Places API中它被称为“Jimmy John's Gourmet Sandwiches”。我希望它找到这个匹配,但事实并非如此。任何帮助将不胜感激。
for (NSDictionary *jsonname in nameFromJSON)
{
NSPredicate *inBothLists = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@, jsonname];
NSArray *arrayFoundInBoth = [nameFromPlist filteredArrayUsingPredicate: inBothLists];
}
答案 0 :(得分:0)
我看到您通过包含字典数据来过滤数据。这意味着
fiteredObj isEqual: jsonname
当然你的代码不起作用 您可以尝试按名称或密钥过滤数据
for (NSString *jsonname in [nameFromJSON objectForKey:@"nameKey"])
{
NSPredicate *inBothLists = [NSPredicate predicateWithFormat:@"SELF.name CONTAINS[c] %@, jsonname];
NSArray *arrayFoundInBoth = [nameFromPlist filteredArrayUsingPredicate: inBothLists];
}
希望有所帮助
答案 1 :(得分:0)
上面的答案是对的! SELF是NSDictionary而不是NSString,
答案 2 :(得分:0)
我最终解决了这个问题!我的谓词很好,我唯一调整的就是我如何使用它。
在我使用JSON数据查看PLIST之前。我颠倒了这一点,并让PLIST查看我下拉的JSON数据。这解决了这个问题!谢谢大家的帮助!