Swift NSPredicate NOT IN

10

我有一个含有X个项目的数组,需要按照uid过滤出特定的项目。我已经编写了下面的谓词,相信它是正确的。但我面临的问题是Swift编译器只允许我使用接受argumentArray参数的初始化器。

let uids = ["34885a9f0897f8e9", "11364aca04e29be0", "c25047b10ad2a0d2"]
NSPredicate(format: "NOT (uid IN %@)", argumentArray: uids)

这始终解析为以下内容:

NOT uid IN "18bbfd4d3f099297"

我知道我在这里漏掉了一些显而易见的东西。我该如何构建一个NSPredicate来过滤一个包含25个项目的数组,将其缩减为一个不包含上述"uids"的22个项目的数组?我需要将此谓词传递到一些Objective-C代码中。


你能否明确地将 uids 强制转换为 NSArray 吗? - nielsbot
1个回答

25

不要使用NSPredicate(format:argumentArray:)。第二个参数用于传递一个参数数组,以替换格式字符串中的多个占位符。

只需将uids作为%@的替代即可。

NSPredicate(format: "NOT (uid IN %@)", uids)

非常感谢您的回答,它对我帮助很大。 - Arpit B Parekh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接