简体   繁体   English

核心数据错误切换到使用“NSSecureUnarchiveFromData”或 NSSecureUnarchiveFromDataTransformer 的子类

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

I am getting this CoreData error.我收到此 CoreData 错误。 I have no idea why I'm getting this error.我不知道为什么会出现此错误。 I'm not using any Transformable types.我没有使用任何 Transformable 类型。 I see nothing in my code indicating that I'm using transformable properties.我在我的代码中没有看到任何表明我正在使用可转换属性的内容。 I let Xcode set up CoreData by selecting the Use Core Data option when I created my project.我在创建项目时通过选择“使用核心数据”选项让 Xcode 设置核心数据。 The other similar questions do not help because the answers have to do with code that look like anything that I can find that Xcode created when the project was created.其他类似的问题无济于事,因为答案与代码有关,这些代码看起来像我在创建项目时可以找到的 Xcode 创建的任何内容。 The project does not crash when this error appears in the debug window.当调试窗口中出现此错误时,项目不会崩溃。 I am using Xcode 11.3 and Google Maps SDK for iOS for iOS 12, and it's running on an iPhone 8 device with iOS 13.3.我正在使用 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.

This is the code that triggers the error:这是触发错误的代码:

do {

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

} catch {

    print(error)

}

I am using the following core data objects:我正在使用以下核心数据对象:

Address entity地址实体

position attribute位置属性

type Integer 16输入整数 16

text attribute type String文本属性类型字符串

timestamp attribute type Date时间戳属性类型日期

route relationship destination Route inverse addresses路由关系目的地路由反向地址

Route entity路线实体

timestamp attribute type Date时间戳属性类型日期

title attribute type String标题属性类型字符串

addresses relationship destination Address inverse route地址关系目的地地址反向路由

I have the following code for managed object classes:我有以下托管对象类的代码:

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)

}

I think you might have overlooked one of your entities called "GMSCacheProperty".我认为您可能忽略了名为“GMSCacheProperty”的实体之一。

As stated in the error message:如错误消息中所述:

CoreData: warning: Property 'value' on Entity 'GMSCacheProperty' is using nil or an insecure NSValueTransformer. CoreData:警告:实体“GMSCacheProperty”上的属性“value”正在使用 nil 或不安全的 NSValueTransformer。

This entity has a property "value" that is using nil or an insecure NSValueTransformer.该实体有一个使用 nil 或不安全的 NSValueTransformer 的属性“value”。

I found I did something wrong when I used my own code instead of removeFromAddresses(_ value: Address) to remove an address from Route.addresses.当我使用自己的代码而不是 removeFromAddresses(_ value: Address) 从 Route.addresses 中删除地址时,我发现我做错了。 When I fixed my code by using removeFromAddresses(_ value: Address) instead of my own code, the error messages in question went away.当我使用 removeFromAddresses(_ value: Address) 而不是我自己的代码修复我的代码时,有问题的错误消息消失了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM