刚移到Xcode 11并在启动时遇到以下崩溃:
CoreData: fault: One or more models in this application are using transformable properties with transformer names that are either unset, or set to NSKeyedUnarchiveFromDataTransformerName. Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead. At some point, Core Data will default to using "NSSecureUnarchiveFromData" when nil is specified, and transformable properties containing classes that do not support NSSecureCoding will become unreadable.
CoreData: warning: Property 'color' on Entity 'Group' is using nil or an insecure NSValueTransformer. Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead.
我正在使用以下代码在启动时创建
NSPersistentContainer
:private let container: NSPersistentContainer = {
let container = NSPersistentContainer(name: "MyApp", managedObjectModel: MyAppModelVersion.current.managedObjectModel())
let storeDescription = NSPersistentStoreDescription(url: getStoreURLWithUserName())
storeDescription.shouldMigrateStoreAutomatically = true
storeDescription.shouldInferMappingModelAutomatically = true
container.persistentStoreDescriptions = [storeDescription]
return container
}()
执行此行后立即发生错误:let container = NSPersistentContainer(name: "MyApp", managedObjectModel: MyAppModelVersion.current.managedObjectModel())
我还有一个名为'Color in a
Group`的属性,该属性是可变形的:@NSManaged public var color: UIColor?
@NSManaged public var hexColorValue: String?
下面是如何设置属性:public var hexColor: String? {
get {
return self.hexColorValue
}
set {
self.hexColorValue = newValue
if let str = newValue {
self.color = UIColor(hex: str)
}
}
}
这是该属性在核心数据中的外观:我不确定如何从此崩溃中恢复。使用Xcode 10可以正常工作
最佳答案
将Transformer属性设置为NSSecureUnarchiveFromDataTransformer可以解决我的情况下的警告。为此,选择属性并将其转换器类型设置为NSSecureUnarchiveFromDataTransformer并通过按commond + R再次运行。
谢谢,
拉特内斯瓦尔
关于swift - 核心数据和Xcode 11 : Please switch to using “NSSecureUnarchiveFromData” or a subclass of NSSecureUnarchiveFromDataTransformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58053355/