我尝试为属于NSManagedObject
子类的属性设置custom property validation。根据文档, Swift 3 中这种方法的一般签名如下:
func validate<Key>(value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws
我的财产名为amount
,所以我有:
class Transaction: NSManagedObject {
@NSManaged var amount: Float
func validateAmount(value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws {
// custom validation logic...
}
}
据我了解,当我创建一个新的Transaction实例时,设置其amount
属性,然后尝试保存托管对象上下文,应该在相关实例上调用validateValue:forKey:
,反过来找到并调用我的自定义验证方法。不幸的是,这并没有发生:validateValue:forKey:
被调用,但我的方法被忽略了。
你可以在这个sample project(用Xcode 8.3.3编写)中看到这一切,如果有人能告诉我哪里出错了,我将不胜感激。
答案 0 :(得分:2)
func validateAmount(_ value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws
。在validateValue(_ value
中添加_之类。