问题描述
我正在尝试将一个测量值保存到一个 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 而不是那个。