Swift 3中的核心数据属性验证

时间:2017-07-05 21:50:43

标签: swift cocoa core-data

我尝试为属于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编写)中看到这一切,如果有人能告诉我哪里出错了,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

调用

func validateAmount(_ value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws。在validateValue(_ value中添加_之类。