使用可变换的属性,其变换器名称要么未设置,要么设置为NSKeyedUnarchiveFromDataTransformerName。

问题描述 投票:0回答:1

我得到一个错误。

在这个应用程序中,一个或多个模型正在使用可转换的属性,这些属性的变压器名称要么是未设置,要么是设置为NSKeyedUnarchiveFromDataTransformerName。

我甚至还没有保存任何数据到Core Data。

在我的NSManagedObject子类中,类型为Transformable的属性'notificationIdentifiers'是NSObject的类型。为什么错误的说是未设置或设置为NSKeyedUnarchiveFromDataTransformerName?

我也得到了警告。

CoreData: warning: 实体'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上搜索了一下,没有得到任何结果,告诉我Use of undeclared type '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.

其他类似的帖子对我没有帮助 我无法按照给出的解决方案,反正没有给出结论性的解决方案。

swift core-data nsmanagedobject
1个回答
0
投票

我通过在数据模型检查器中选择属性并将Transformer属性设置为 "NSSecureUnarchiveFromDataTransformer "来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.