2009-06-24 10 views
1

Ich entwickle eine Desktop-Mac OS X-App, die ihre sehr einfachen Daten in SQLite mit Core Data speichert und eine begleitende mobile App für das iPhone, die einfach Daten von der Desktop-App lesen muss. Obwohl sie das gleiche verwaltete Objektmodell verwenden, wenn ich die SQLite-Datenbank in die mobile App geladen habe, benötigen die Daten mehrere Sekunden, um die Daten zu migrieren. Ich möchte diese lange Wartezeit wirklich vermeiden, da sie linear mit der Größe der SQLite-Datei zusammenhängt.Core Data Migration wirklich langsam, warum passiert es überhaupt?

Warum müssen Daten aus demselben verwalteten Objektmodell überhaupt migriert werden?

Kennt jemand eine Möglichkeit, die Migration zu vermeiden?

+2

Woher wissen Sie, dass es migriert? Hast du einen Dialog? Die Migration wird nur durchgeführt, wenn Sie sie explizit aktivieren (siehe Handbuch zur Kerndaten-Versionierung und -Migration). Wenn sich Ihr Modell nicht geändert hat, ist keine Migration erforderlich, sodass möglicherweise etwas anderes passiert. – Hunter

+0

Gute Frage. Ich aktiviere es, weil es den Laden sonst nicht lädt. Ich bin ziemlich sicher, dass es migriert, weil ich die lange Ladezeit mit Shark profiliert habe. – tmh

Antwort

0

Ich habe entdeckt, was dieses Problem verursacht hat. Obwohl es wahrscheinlich sehr offensichtlich ist, werde ich es so erzählen, hoffentlich wird niemand diesen Fehler machen ...

Ich hatte zwei verschiedene Managed Object Models in meinem Projekt. Mehrere Daten scheinen Core Data zu einer Migration zu zwingen, um herauszufinden, welche Daten zu welcher MOM passen.

Als Lösung konnte ich die Modelle manuell zusammenführen, so dass beide Datenquellen mit der gleichen MOM dargestellt werden können.