Ich muss ein benutzerdefiniertes Klassenobjekt in Coredata speichern. Das Problem ist meine benutzerdefinierte Klasse enthält Strukturen, Enum usw. Ich habe folgende Methode versucht.So speichern Sie benutzerdefinierte Objekte mit Struktur in Coredata
- (void) encodeWithCoder: (NSCoder *) Encoder.
Aber ich immer diese Fehlermeldung
[NSKeyedArchiver encodeValueOfObjCType: in:]: Das Archivierungs nicht kodieren structs'
Was ist die beste Praxis diese Aufgabe zu Coredata zu speichern ist. Bitte hilf mir.
mit DataWithBytes: Länge: ist nicht zwischen verschiedenen Endian oder 32/64 Bit-Plattformen. Wenn Sie dies verwenden, werden Ihre Daten an das angegebene Gerät angehängt und die Benutzer können nicht auf verschiedene Plattformen aktualisieren oder die Datei auf einer anderen Plattform als der, auf der sie erstellt wurde, übertragen/öffnen. –
@Brent Sicher ... aber die Frage ist über iPhone und ich denke, das sollte für ein paar Jahre gut funktionieren ... und wenn Apple die Hardware ändern wird, glaube ich, (a) werden sie einen Zeitraum mit einem Emulator zu bringen haben so viel Software wie möglich (b) das Programm muss neu kompiliert werden und kann dann repariert werden (wenn nötig) ... und es ist nur ein Problem für "Daten", die auf einem Hardwaretyp erstellt/gespeichert werden Übertragen auf eine andere neue Architektur ... – epatel
@epatel Ich habe Kunden auf PPC und Intel, die CoreData-Backup-Dateien zu/von einem iPhone übertragen. Diese Empfehlung hätte mir Kopfschmerzen bereitet, wenn ich es mir angehört hätte. Sie können ARM 6/7 Code für das iPhone erstellen, es ist kein Problem, in Zukunft an 32/64 Bit Fett-Binärdateien zu denken. Dies war ein "vorsichtiger" Kommentar, und ich empfehle die unten erwähnte NSCoder-Methode, die für immer sicher ist, nicht nur kurzfristig "für ein paar Jahre". –