【发布时间】:2020-04-09 20:17:31
【问题描述】:
我收到一个错误:
此应用程序中的一个或多个模型正在使用带有未设置或设置为 NSKeyedUnarchiveFromDataTransformerName 的转换器名称的可转换属性。
我什至还没有将任何数据保存到 Core Data。
类型为 Transformable 的属性“notificationIdentifiers”在我的 NSManagedObject 子类中属于 NSObject 类型。为什么错误提示它未设置或设置为 NSKeyedUnarchiveFromDataTransformerName?
我也收到警告:
CoreData:警告:实体“Affirmation”上的属性“notificationIdentifiers”正在使用 nil 或不安全的 NSValueTransformer。请改用“NSSecureUnarchiveFromData”或 NSSecureUnarchiveFromDataTransformer 的子类。
这是我的 NSManagedObject 子类:
extension Affirmation {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Affirmation> {
return NSFetchRequest<Affirmation>(entityName: "Affirmation")
}
@NSManaged public var body: String
@NSManaged public var count: Int64
@NSManaged public var days: NSData
@NSManaged public var frequency: Int64
@NSManaged public var notificationIdentifiers: NSObject
@NSManaged public var recordName: String?
@NSManaged public var time: NSDate
@NSManaged public var timestamp: NSDate
@NSManaged public var title: String
}
当我在我的 NSManagedObject 子类中将该属性更改为 NSSecureUnarchiveFromData 类型时,我收到一条错误消息:
使用未声明的类型“NSSecureUnarchiveFromData”
我在 Google 上进行了搜索,但没有得到任何结果告诉我使用未声明的类型“NSSecureUnarchiveFromData”属于哪个库框架。我在 developer.apple.com 上进行了搜索,但没有找到任何内容。
我认为我没有完全理解这条消息的含义。
这是我的整个调试窗口:
2020-04-09 14:43:34.107774-0500 Affirmations[3922:921109] [error] 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: 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.
2020-04-09 14:43:34.108286-0500 Affirmations[3922:921109] [error] CoreData: 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 'notificationIdentifiers' on Entity 'Affirmation' is using nil or an insecure NSValueTransformer. Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead.
其他类似的帖子对我没有帮助。我无法遵循给出的解决方案,也没有给出任何结论性的解决方案。
【问题讨论】:
-
你试过
NSSecureUnarchiveFromDataTransformerName还是类名NSSecureUnarchiveFromDataTransformer? -
@Willeke 还没有。我会试试的。
标签: swift core-data nsmanagedobject