微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Transformable 和 NSKeyedUnarchiveFromData

如何解决Transformable 和 NSKeyedUnarchiveFromData

我正在尝试将一个测量值保存到一个 Core Data 可转换属性中。基本上,这个答案是什么,只是一个不同的单位:How to Save a Generic Measurement<Unit> in Core Data?

一切正常,但是我在日志中收到此消息: [general] 'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release

我不知道如何解决这个问题。或者它到底是什么意思。这是我第一次使用可转换的 Core Data 属性

谢谢


编辑:

我创建了一个新类:

import Foundation

@objc(UnitTemperatureValueTransformer)
final class UnitTemperatureValueTransformer: NSSecureUnarchiveFromDataTransformer {
    static let name = NSValueTransformerName(rawValue: String(describing: UnitTemperatureValueTransformer.self))
    override static var allowedTopLevelClasses: [AnyClass] {
        return [UnitTemperature.self]
    }
    
    public static func register() {
        let transformer = UnitTemperatureValueTransformer()
        ValueTransformer.setValueTransformer(transformer,forName: name)
    }
}

然后我将 Core Data 对象的转换器值设置为:UnitTemperatureValueTransformer

这就是需要做的全部吗?

解决方法

出现此警告是因为苹果将在未来版本中将其删除,因为默认情况下它不安全。这是 Apple 论坛上的 thread。 您应该使用 NSSecureUnarchiveFromData 而不是那个。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。