gpt4 book ai didi

Swift - 动态生成 NSPredicate?

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:26 24 4
gpt4 key购买 nike

我正在尝试动态创建谓词并执行提取。

值可以是 String 或 Int,当和 int 值被发送到 NSPredicate 初始化程序时,它会崩溃并出现以下错误:

-[__NSCFNumber rangeOfString:]: 无法识别的选择器发送到实例

我知道问题是 Int 的 %@ 格式,但有没有办法让它动态化,这样我就不必手动检查 String 和 Int,然后创建谓词?

var keyValues: [String: AnyObject]
var predicates: [NSPredicate]()

for (key, value) in keyValues {
var predicate = NSPredicate(format: "%K = %@", key: [value])
predicates.append(predicate)
}

var compundPredicate = NSCompoundPredicate.andPredicateWithSubpredicates(predicates)

最佳答案

value as NSObject 的作用:

var keyValues: [String: AnyObject] = ["name" : "John Doe", "age" : 39]
var predicates = [NSPredicate]()

for (key, value) in keyValues {
var predicate = NSPredicate(format: "%K = %@", key, value as NSObject)
predicates.append(predicate)
}

var compundPredicate = NSCompoundPredicate.andPredicateWithSubpredicates(predicates)
println(compundPredicate)

输出:

name == "John Doe" AND age == 39

Update for Swift 3/4:

let keyValues = ["name" : "John Doe" as NSObject, "age" : 39 as NSObject]
var predicates = [NSPredicate]()

for (key, value) in keyValues {
let predicate = NSPredicate(format: "%K = %@", key, value)
predicates.append(predicate)
}

let compundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicates)

或更短:

let keyValues = ["name" : "John Doe" as NSObject, "age" : 39 as NSObject]
let predicates = keyValues.map { NSPredicate(format: "%K = %@", $0.key, $0.value) }
let compundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicates)

关于Swift - 动态生成 NSPredicate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com