【发布时间】:2014-12-20 20:23:57
【问题描述】:
我正在尝试动态生成谓词并在从 Xcode 的 beta 版本更新后出现编译错误。任何想法是什么问题。我尝试将 valueForKey 的结果强制转换为 CVarArgType,但没有成功。
import UIKit
import CoreData
class User: NSManagedObject {
@NSManaged var a: String?
@NSManaged var b: String?
}
var user = User() // This will probably crash, but good enough to reproduce compile error
var keys = ["a", "b"]
for key in keys {
var predicate = NSPredicate(format: "%K == %@", key, user.valueForKey(key))
}
【问题讨论】:
-
报错在哪里?另外,您至少可以为
keys提供一个仍然重现错误的虚假声明吗?此外,managedObject 的虚假声明会很棒。人们越容易测试您的代码并重现问题(尤其是在操场上),您将获得更好的答案。 -
@Bluehound %@ 不应用于谓词中的属性名称
-
@drewag 异常发生在 valueForKey 调用上。我在代码中有一条注释说键是一个字符串数组 ["property1", "property2"]
-
你是对的。我只是看了看,认为强格式说明符不是谓词格式说明符
-
@aryaxt,我的意思是,如果你能给我们一个代码块,我们可以复制并粘贴到 Playground 中并得到错误,我们可以更有效、更快速地为你提供帮助。
标签: swift nspredicate