自定义setter / getter Core Data的功能

时间:2016-01-13 10:19:35

标签: swift function core-data nsmanagedobject

我正在尝试创建一个全局函数,因此我的Core Data类可以使用此函数来创建自定义setter。但是,我“模糊地使用了”#ChangeValueForKey"。

我使用的代码是:

func coredataSetter<T: NSManagedObject>(entity: T, attribute: CustomStringConvertible, value: String) {
    entity.willChangeValueForKey(attribute.description)
    entity.setPrimitiveValue(value, forKey: attribute.description)
    entity.didChangeValueForKey(attribute.description)
}

我有点困惑......

1 个答案:

答案 0 :(得分:0)

我不确定为什么这个引用含糊不清。还有willChangeValueForKey的另一个实现,但您的函数声明应该澄清它。

在这种情况下,使这个功能通用并不能帮助你。这个函数在非泛型形式中同样有用,幸运的是,它没有模糊的引用问题。此版本仍处理NSManagedObject个实例和子类实例:

func coredataSetter(entity: NSManagedObject, attribute: CustomStringConvertible, value: String) {
    entity.willChangeValueForKey(attribute.description)
    entity.setPrimitiveValue(value, forKey: attribute.description)
    entity.didChangeValueForKey(attribute.description)
}