刚升级到Xcode 11,启动时出现以下崩溃:
CoreData: fault: 应用程序中的一个或多个模型正在使用转换属性,其转换器名称未设置或设置为NSKeyedUnarchiveFromDataTransformerName。请改用“NSSecureUnarchiveFromData”或NSSecureUnarchiveFromDataTransformer子类。在某些时候,Core Data将默认使用“NSSecureUnarchiveFromData”当指定为nil时,不支持NSSecureCoding的可转换属性包含的类将变得无法读取。
CoreData: warning: 实体“Group”上的属性“color”正在使用nil或不安全的NSValueTransformer。请改用“NSSecureUnarchiveFromData”或NSSecureUnarchiveFromDataTransformer子类。
我正在使用以下代码在启动时创建一个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())
我还有一个名为'Colorin 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)
}
}
}
这是在Core Data中属性的样子:
我不确定如何从这个崩溃中恢复。这在Xcode 10中正常运行。
nil
,因为它一直运行良好。我需要在每个记录中保存十六进制和UIColor属性,以便我不必来回转换。 - user1107173hexColor: String?
而不是存储UIColor
。 - user1107173