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

标签 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)
    }


}

那是我的值(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 - sqlite3_step 返回 SQLITE_CONSTRAINT

ios - 无法将 View 场景链接到创建的 CustomClass

ios - iOS屏幕捕获模糊

ios - TableView 选中标记和取消选中并向上滚动仍然选中 Ios Swift 4 中的单元格值

swift - 在核心数据中检索具有已过滤子级的父级

ios - 从多个 View Controller 获取和设置核心数据模型的最合适模式是什么?

ios - 我将如何实现基于堆叠卡片的 View ?

ios - UITableView 通过内容偏移获取中间位置

ios - 在订购应用程序中设置核心数据关系

objective-c - 如何使用核心数据选择有条件的子对象?