Core Data Error wechselt stattdessen zur Verwendung von "NSSecureUnarchiveFromData" oder einer Unterklasse von NSSecureUnarchiveFromDataTransformer

8

Ich erhalte diesen CoreData-Fehler. Ich habe keine Ahnung, warum ich diesen Fehler erhalte. Ich verwende keine transformierbaren Typen. In meinem Code wird nichts angezeigt, was darauf hinweist, dass ich transformierbare Eigenschaften verwende. Ich habe Xcode CoreData einrichten lassen, indem ich beim Erstellen meines Projekts die Option Kerndaten verwenden ausgewählt habe. Die anderen ähnlichen Fragen helfen nicht weiter, da die Antworten mit Code zu tun haben, der wie alles aussieht, was ich finden kann, wenn Xcode erstellt wurde, als das Projekt erstellt wurde. Das Projekt stürzt nicht ab, wenn dieser Fehler im Debug-Fenster angezeigt wird. Ich verwende Xcode 11.3 und Google Maps SDK für iOS für iOS 12 und es läuft auf einem iPhone 8-Gerät mit 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.

Dies ist der Code, der den Fehler auslöst:

do {

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

} catch {

    print(error)

}

Ich verwende die folgenden Kerndatenobjekte:

Adressentität

Positionsattribut

Typ Integer 16

Textattributtyp String

Zeitstempel-Attributtyp Datum

Routenbeziehungsziel Routeninverse Adressen

Entität weiterleiten

Zeitstempel-Attributtyp Datum

Titelattributtyp String

Adressen Beziehungsziel Adresse inverse Route

Ich habe den folgenden Code für verwaltete Objektklassen:

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)

}
Daniel Brower
quelle

Antworten:

0

Ich denke, Sie haben möglicherweise eine Ihrer Entitäten mit dem Namen "GMSCacheProperty" übersehen.

Wie in der Fehlermeldung angegeben:

CoreData: Warnung: Die Eigenschaft 'value' für die Entität 'GMSCacheProperty' verwendet nil oder einen unsicheren NSValueTransformer.

Diese Entität hat eine Eigenschaft "value", die nil oder einen unsicheren NSValueTransformer verwendet.

Li Mengran
quelle
0

Ich habe festgestellt, dass ich etwas falsch gemacht habe, als ich meinen eigenen Code anstelle von removeFromAddresses (_ value: Address) verwendet habe, um eine Adresse aus Route.addresses zu entfernen. Als ich meinen Code mithilfe von removeFromAddresses (_ value: Address) anstelle meines eigenen Codes korrigierte, verschwanden die fraglichen Fehlermeldungen.

Daniel Brower
quelle