草庐IT

ios - NSPredicate predicateWithFormat :argumentArray: Only Evaluating First Argument

coder 2023-09-22 原文

我在使用 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/

有关ios - NSPredicate predicateWithFormat :argumentArray: Only Evaluating First Argument的更多相关文章

随机推荐