Swift NSPredicate 不在

Swift NSPredicate NOT IN

我有一个包含 X 个项目的数组,我需要通过 uid 过滤掉特定的项目。我写了以下谓词,我认为它是正确的。我面临的问题是 Swift 编译器只允许我使用接受 argumentArray 的初始化程序。

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

始终解析为以下内容:

NOT uid IN "18bbfd4d3f099297"

我知道我在这里遗漏了一些明显的东西。我如何构建一个 NSPredicate 来将 25 个项目的数组过滤为 22 个项目的数组,其中不包括上面列出的 uids?我需要将这个谓词传递到一些 Objective-C 代码中。

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

只需传递 uids 作为 %@

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