核心数据:在实体ZZZZ上找不到属性YYYY的类名为XXX的NSValueTransformer

时间:2015-09-15 23:03:14

标签: ios swift core-data

我在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)
    }


}

这是我的价值转换器。

但不知何故,我仍然在控制台中收到警告:No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ

任何想法为什么?

1 个答案:

答案 0 :(得分:23)

我花了很多时间来分享我找到的解决方案:

我必须让Objc可以使用NSValueTransformer子类。

@objc(LocationArrayTransformer)
class LocationArrayTransformer : NSValueTransformer {
 ....
}

这很简单。

正如@Sbooth指出的那样,Swift类是命名空间的。使用@objc可以在没有命名空间的情况下使用该类。因此,将变压器名称设置为MyApp.Mytransformer也很有效!