我在使用 NSPredicate predicateWithFormat:argumentArray 时遇到了一些问题:。在此示例中,serverIDList 是字符串数组。结果是一个 NSManagedObjects 数组,其属性名为“flid”,它是一个字符串。
NSMutableString *predicateString = [[NSMutableString alloc] init];
[predicateString appendString:@"(flid IN %@)"];
[results filterUsingPredicate:[NSPredicate predicateWithFormat:predicateString argumentArray:serverIDList]];
问题是 [NSPredicate predicateWithFormat:predicateString argumentArray:serverIDList] 的计算结果为“flid IN '2155'”,这只是数组 serverIDList 的第一个值.我似乎无法获得评估整个数组的谓词。这里有什么遗漏吗?
谢谢!
最佳答案
[NSPredicate predicateWithFormat:@"(flid IN %@)" argumentArray:serverIDList]
相当于
[NSPredicate predicateWithFormat:@"(flid IN %@)", id1, id2, ..., idN]
其中 id1, ..., idN 是数组 serverIDList 的元素。
这应该可以解释为什么只评估第一个元素。
你可能想要的是
[NSPredicate predicateWithFormat:@"(flid IN %@)", serverIDList]
备注:我建议不要首先将谓词创建为字符串。的机会
引用或转义错误非常高。仅将 predicateWithFormat 与
常量格式字符串。如果您必须在运行时动态组合谓词,
使用 NSCompoundPredicate。
关于ios - NSPredicate predicateWithFormat :argumentArray: Only Evaluating First Argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18059170/