Ошибка основных данных переключается на использование «NSSecureUnarchiveFromData» или подкласса NSSecureUnarchiveFromDataTransformer вместо этого - PullRequest
8 голосов
/ 13 января 2020

Я получаю эту ошибку CoreData. Я понятия не имею, почему я получаю эту ошибку. Я не использую какие-либо трансформируемые типы. Я ничего не вижу в своем коде, указывающем, что я использую трансформируемые свойства. Я позволил Xcode настроить CoreData, выбрав опцию Use Core Data при создании своего проекта. Другие подобные вопросы не помогают, потому что ответы имеют отношение к коду, который похож на все, что я могу найти, что Xcode создал при создании проекта. Проект не создает sh, когда эта ошибка появляется в окне отладки. Я использую Xcode 11.3 и Google Maps SDK для iOS для iOS 12, и он работает на устройстве iPhone 8 с iOS 13.3.

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)

}

Я использую следующие основные объекты данных:

Адрес объекта

атрибут позиции

тип Integer 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)

}

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Я обнаружил, что сделал что-то не так, когда использовал свой собственный код вместо removeFromAddresses (_ value: Address) для удаления адреса из Route.addresses. Когда я исправил свой код, используя removeFromAddresses (_ value: Address) вместо моего собственного кода, соответствующие сообщения об ошибках исчезли.

0 голосов
/ 20 января 2020

Я думаю, что вы, возможно, пропустили одну из ваших сущностей под названием "GMSCacheProperty".

Как указано в сообщении об ошибке:

CoreData: warning: свойство 'value' в Entity 'GMSCacheProperty' использует ноль или небезопасный NSValueTransformer.

У этого объекта есть свойство "value", которое использует ноль или небезопасный NSValueTransformer.

...