可转换和 NSKeyedUnarchiveFromData
Transformable and 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
我不确定如何解决这个问题。或者它到底是什么意思。这是我第一次使用可转换的核心数据 属性。
谢谢
编辑:
我做了一个新的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)
}
}
然后我将核心数据对象的转换器值设置为:UnitTemperatureValueTransformer
。
这就是所有需要做的事情吗?
出现此警告是因为 apple 将在未来的版本中将其删除,因为默认情况下它是不安全的。这是 Apple 论坛上的 thread。
你应该使用 NSSecureUnarchiveFromData 而不是那个。
我正在尝试将测量保存到 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
我不确定如何解决这个问题。或者它到底是什么意思。这是我第一次使用可转换的核心数据 属性。
谢谢
编辑:
我做了一个新的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)
}
}
然后我将核心数据对象的转换器值设置为:UnitTemperatureValueTransformer
。
这就是所有需要做的事情吗?
出现此警告是因为 apple 将在未来的版本中将其删除,因为默认情况下它是不安全的。这是 Apple 论坛上的 thread。 你应该使用 NSSecureUnarchiveFromData 而不是那个。