草庐IT

ios - 核心数据 : No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ

coder 2023-09-04 原文

我在 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/

有关ios - 核心数据 : No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ的更多相关文章

随机推荐