Ich habe eine bestehende iPad-Anwendung, zu der ich gerade Core-Daten-Versionierung hinzugefügt habe. Ich habe die Dokumentation durchgesehen und die detaillierten Schritte ausgeführt. Jetzt nach meinem neuen Modell als das aktuelle versioniert Modell auswählen und versuchen, es auf meinem dev Gerät von xCode zu laufen bekomme ich folgende Fehlermeldung:Core Data Migration - Tabelle existiert bereits
2012-03-28 07:35:42.137 DocsOnTap[2603:707] CoreData: error: (1) I/O error for database at /var/mobile/Applications/06EECF01-3598-4513-8A3A-BE4FD49EEBF6/Documents/.DocsOnTap.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3. SQLite error code:1, 'table Z_2TAG already exists'
Die einzige Änderung, die ich zu meinem Modell machte, war in einem einzigen hinzufügen neue Einheit Ich habe eine Tabelle namens Tag in meinem Modell - das scheint der Fehler zu sein.
Wenn ich mein aktuelles versioniertes Modell auf die vorherige Modellversion zurücksetze, kann ich meine App auf meinem Dev-Gerät ohne Fehler von Xcode ausführen.
Ich habe gelesen, dass es Probleme geben kann, Core-Datenmigration auf Dev-Geräten zu verwenden. Ich möchte jedoch nur den Prozess testen, um sicherzustellen, dass die Migration bei der Aktualisierung unserer App im Appstore wie erwartet für unsere Kunden funktioniert.
Sie müssen Ihre ursprüngliche App jedes Mal mit dem Originalmodell installieren, wenn Sie die Migration testen möchten. Wenn Sie Änderungen an der neuen Version in Dev vornehmen, müssen Sie die App löschen und neu installieren (es sei denn, Ihr Versionsdevice ändert sich). – Joe
Ich bin mir nicht sicher, ob ich dich verstehe. Ich habe meine Original-App mit Original-Modell auf meinem Dev-Gerät. Ich habe meine bestehende App geändert, um die Kerndaten-Versionierung hinzuzufügen, ein neues Modell hinzugefügt, das aktuelle Modell erstellt und dem neuen Modell eine Entität hinzugefügt. Dann habe ich versucht auf dem Dev-Gerät zu laufen und habe den obigen Fehler bekommen. Was meinst du mit "Versionsänderungen"? – daveywc
Ich sagte, dass wenn Sie das Datamodell (Version 2.0 zum Beispiel) versionieren, und fügen Sie dann eine Tabelle hinzu. Wenn Sie den Code das erste Mal über dem Datenmodell der Version 1 ausführen, wird er automatisch migriert, sofern Sie den Code hinzugefügt haben. Wenn Sie jetzt Ihren Code stoppen und weitere Änderungen am 2.0-Datenmodell vornehmen, wird die automatische Migration nicht durchgeführt, da Sie das gleiche Modell geändert haben und Ihre Anwendung wahrscheinlich entfernen und erneut ausführen müssen. – Joe