我在 xcdatamodel 文件中设置了我的 CoreData 模型。
我的属性 YYYY 有一个可转换的类型,我在数据模型检查器中设置了转换器名称。
在我的案例中,我在我的模型中存储了一个[CLLocation]
。
class LocationArrayTransformer : NSValueTransformer {
override func transformedValue(value: AnyObject?) -> AnyObject? {
let locations = value as! [CLLocation]
return NSKeyedArchiver.archivedDataWithRootObject(locations)
}
override func reverseTransformedValue(value: AnyObject?) -> AnyObject? {
let data = value as! NSData
return NSKeyedUnarchiver.unarchiveObjectWithData(data)
}
}
那是我的值(value)转换器。
但不知何故,我仍然在控制台中收到警告:No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ
知道为什么吗?
最佳答案
我花了很多时间在这上面不分享我找到的解决方案:
我必须让 Objc 可以使用 NSValueTransformer
子类。
@objc(LocationArrayTransformer)
class LocationArrayTransformer : NSValueTransformer {
....
}
就这么简单。
正如@Sbooth 指出的那样,Swift 类是命名空间的。使用 @objc
可以使类在没有命名空间的情况下可用。因此,将转换器名称设置为 MyApp.Mytransformer
也很有效!
关于ios - 核心数据 : No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32597065/