简体   繁体   English

可转换和 NSKeyedUnarchiveFromData

[英]Transformable and NSKeyedUnarchiveFromData

I'm trying to save a Measurement to a Core Data transformable property.我正在尝试将测量值保存到核心数据可转换属性。 Basically, what's in this answer, only a different unit: How to Save a Generic Measurement<Unit> in Core Data?基本上,这个答案有什么,只有一个不同的单位: 如何在核心数据中保存通用测量<Unit>?

Everything works, however I'm getting this message in the log: [general] 'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release一切正常,但是我在日志中收到此消息: [general] 'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release

I'm not sure how to fix this.我不知道如何解决这个问题。 Or what exactly it means.或者它到底是什么意思。 This is my first time working with a transformable Core Data property.这是我第一次使用可转换的 Core Data 属性。

Thanks谢谢


Edit:编辑:

I made a new class:我做了一个新的 class:

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

And then I set the transformer value for the Core Data object to: UnitTemperatureValueTransformer .然后我将核心数据 object 的变压器值设置为: UnitTemperatureValueTransformer

Is that all that needs to be done?这就是所有需要做的吗?

This warning appears because apple will remove it in future release because it's not secure by default.出现此警告是因为苹果将在未来的版本中删除它,因为默认情况下它不安全。 Here is thread on Apple forum.这是Apple论坛上的主题。 You should use NSSecureUnarchiveFromData instead of that.您应该使用NSSecureUnarchiveFromData代替。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM