Mat*_*ler 8 core-data ios swift
我将我的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
任何想法为什么?
Mat*_*ler 29
我花了很多时间来分享我发现的解决方案:
我必须让NSValueTransformer子类可用于Objc.
@objc(LocationArrayTransformer)
class LocationArrayTransformer : NSValueTransformer {
....
}
Run Code Online (Sandbox Code Playgroud)
就那么简单.
正如@Sbooth指出的那样,Swift类是命名空间的.使用@objc不使用命名空间使类可用.因此,设置变压器名称MyApp.Mytransformer也很有效!
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |