【问题标题】:Swift NSPredicate NOT INSwift NSPredicate 不在
【发布时间】:2015-10-01 01:34:28
【问题描述】:

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

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

总是解决以下问题:

NOT uid IN "18bbfd4d3f099297"

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

【问题讨论】:

  • 你能把uids明确地转换成NSArray吗?

标签: ios swift nspredicate


【解决方案1】:

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

只需通过 uids 替换 %@

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

【讨论】:

  • 非常感谢您的回答,对我帮助很大
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多