簡體   English   中英

核心數據錯誤切換到使用“NSSecureUnarchiveFromData”或 NSSecureUnarchiveFromDataTransformer 的子類

[英]Core Data error switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead

我收到此 CoreData 錯誤。 我不知道為什么會出現此錯誤。 我沒有使用任何 Transformable 類型。 我在我的代碼中沒有看到任何表明我正在使用可轉換屬性的內容。 我在創建項目時通過選擇“使用核心數據”選項讓 Xcode 設置核心數據。 其他類似的問題無濟於事,因為答案與代碼有關,這些代碼看起來像我在創建項目時可以找到的 Xcode 創建的任何內容。 當調試窗口中出現此錯誤時,項目不會崩潰。 我正在使用 Xcode 11.3 和適用於 iOS 12 的 iOS 版 Google Maps SDK,它在裝有 iOS 13.3 的 iPhone 8 設備上運行。

CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/A2B8A56C-E0D5-467A-9300-8EDFB20574BE/Routes.app/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo'
2020-01-13 12:42:00.771883-0600 Routes[4631:1067373] [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-01-13 12:42:00.771972-0600 Routes[4631:1067373] [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 'value' on Entity 'GMSCacheProperty' is using nil or an insecure NSValueTransformer.  Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead.
CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/A2B8A56C-E0D5-467A-9300-8EDFB20574BE/Routes.app/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo'
CoreData: warning: Property 'value' on Entity 'GMSCacheProperty' is using nil or an insecure NSValueTransformer.  Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead.
CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/A2B8A56C-E0D5-467A-9300-8EDFB20574BE/Routes.app/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo'
CoreData: warning: Property 'value' on Entity 'GMSCacheProperty' is using nil or an insecure NSValueTransformer.  Please switch to using "NSSecureUnarchiveFromData" or a subclass of NSSecureUnarchiveFromDataTransformer instead.

這是觸發錯誤的代碼:

do {

    storeAddresses = try managedObjectContext.fetch(Address.fetchRequest())

} catch {

    print(error)

}

我正在使用以下核心數據對象:

地址實體

位置屬性

輸入整數 16

文本屬性類型字符串

時間戳屬性類型日期

路由關系目的地路由反向地址

路線實體

時間戳屬性類型日期

標題屬性類型字符串

地址關系目的地地址反向路由

我有以下托管對象類的代碼:

public class Address: NSManagedObject {

}

extension Address {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Address> {
        return NSFetchRequest<Address>(entityName: "Address")
    }

    @NSManaged public var text: String?
    @NSManaged public var timestamp: NSDate
    @NSManaged public var position: Int16
    @NSManaged public var route: Route?

}

public class Route: NSManagedObject {

}

extension Route {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Route> {
        return NSFetchRequest<Route>(entityName: "Route")
    }

    @NSManaged public var timestamp: NSDate
    @NSManaged public var title: String?
    @NSManaged public var addresses: NSSet?

}

// MARK: Generated accessors for addresses
extension Route {

    @objc(addAddressesObject:)
    @NSManaged public func addToAddresses(_ value: Address)

    @objc(removeAddressesObject:)
    @NSManaged public func removeFromAddresses(_ value: Address)

    @objc(addAddresses:)
    @NSManaged public func addToAddresses(_ values: NSSet)

    @objc(removeAddresses:)
    @NSManaged public func removeFromAddresses(_ values: NSSet)

}

我認為您可能忽略了名為“GMSCacheProperty”的實體之一。

如錯誤消息中所述:

CoreData:警告:實體“GMSCacheProperty”上的屬性“value”正在使用 nil 或不安全的 NSValueTransformer。

該實體有一個使用 nil 或不安全的 NSValueTransformer 的屬性“value”。

當我使用自己的代碼而不是 removeFromAddresses(_ value: Address) 從 Route.addresses 中刪除地址時,我發現我做錯了。 當我使用 removeFromAddresses(_ value: Address) 而不是我自己的代碼修復我的代碼時,有問題的錯誤消息消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM