【发布时间】:2017-07-05 21:50:43
【问题描述】:
我正在尝试为属于 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 编写)中亲自看到这一切,如果有人能告诉我哪里出错了,我将不胜感激。
【问题讨论】:
-
func validateAmount(_ value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws似乎是正确的签名。