我将我的CoreData模型设置在xcdatamodel文件中.
我的属性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)
}
}
Run Code Online (Sandbox Code Playgroud)
那是我的价值变换器.
但不知何故,我仍然在控制台中收到警告: No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ
任何想法为什么?
我正在尝试在我的应用程序打开的第一个窗口使用的 Swift 中使用ValueTransformer(né NSValueTransformer)。值转换器需要先注册,ValueTransformer.registerValueTransformer(_:forName:)然后才能被用户界面运行时查询。
的文档NSValueTransformer 建议在+[AppDelegate initialize]. 但是,Swift 不允许您覆盖+initialize. 我试图从applicationWillFinishLaunching(_)and注册applicationDidFinishLaunching(_),但它们都发生得太晚了,我的窗口没有被填满,因为运行时找不到值转换器。
我应该在哪里注册我的价值转换器?