NSPredicate - 转换参数?

时间:2017-08-13 14:37:44

标签: swift nspredicate

知道如何在Swift 3中执行此操作吗?

let number: NSArray = [123, 456, 678]
let check = "1"
let predicate = NSPredicate(format: "number.stringValue CONTAINS %@", check)

number.filtered(using: predicate)

问题是.stringValue。任何想法如何在不使用块谓词而不使用标准过滤器函数的情况下完成此操作,但是如上所述使用谓词?

1 个答案:

答案 0 :(得分:3)

数组变量的名称(此处:" number")不是数组元素的键路径的一部分,所以它只是:

let number: NSArray = [123, 456, 678]
let check = "6"
let predicate = NSPredicate(format: "stringValue CONTAINS %@", check)

print(number.filtered(using: predicate)) // [456, 678]

或者使用" SELF",如果你想更明确:

let predicate = NSPredicate(format: "SELF.stringValue CONTAINS %@", check)

" SELF"关键字在"谓词编程指南":

中的Predicate Format String Syntax中进行了解释
  

SELF
  表示正在评估的对象。