Xcode 4, Core Data Model Version - Aktuelle Version festlegen
183
Ich bin verwirrt darüber, wie die folgende Funktion in Xcode 4 ausgeführt wird, um das Modell festzulegen, das nach dem Erstellen eines versionierten Modells verwendet werden soll.
Ich wünschte, ich könnte dies jedes Mal abstimmen, wenn ich es erneut referenzieren muss.
Erik
Antworten:
329
Klicken Sie auf die .xcdatamodelId-Datei der obersten Ebene (die die vielen Versionen von .xcdatamodel als untergeordnete Dateien enthält).
Stellen Sie sicher, dass der Seitenbereich Dienstprogramme sichtbar ist (wenn nicht, klicken Sie oben rechts im Fenster auf die dritte Schaltfläche "Ansicht").
Wählen Sie im Seitenbereich Dienstprogramme den Dateiinspektor aus (kleines Papiersymbol oben links).
Sie sehen "Versioned Core Data Model" als Gruppe. Ändern Sie einfach das Dropdown-Menü "Current" in Ihre neue Version.
Wenn Sie in Xcode 4 nur eine Version Ihres Datenmodells im Abschnitt "Versioniertes Kerndatenmodell - Aktuell" des Dateiinspektors sehen, wenn Sie Ihre * .xcdatamodeld-Datei ausgewählt haben; oder Sie haben eine zweite Version Ihrer * .xcdatamodel-Datei, die außerhalb des xcdatamodeld-Bundles im Xcode-Projektnavigator angezeigt wird (siehe unten).
Um dies zu beheben:
1) Entfernen Sie die Referenzen * .xcdatamodeld und * .xcdatamodel aus Xcode, indem Sie im Projektnavigator mit der rechten Maustaste darauf klicken und auf "Löschen" klicken.
2) Wenn Sie von Xcode dazu aufgefordert werden, klicken Sie auf Nur Referenzen entfernen (sehr wichtig).
3) Starten Sie Xcode für eine gute Maßnahme neu, falls ein Caching stattfindet.
4) Fügen Sie die einzelne * .xcdatamodeld-Datei, die beide * .xcdatamodel-Dateien enthält, erneut hinzu.
Xcode sollte nun die Beziehungen erkennen und es Ihnen ermöglichen, die * .xcdatamodeld-Datei im Projektnavigator so zu erweitern, dass beide * .xcdatamodel-Dateien unter dem übergeordneten xcdatamodeld-Bundle angezeigt werden und neben dem aktuellen Modell auch ein grünes Häkchen angezeigt wird. Auf diese Weise sollten Sie auch die aktuelle Version des Datenmodells im Dateiinspektor auswählen können, anstatt nur eine Version anzuzeigen.
Es gibt nichts Besseres als "versioniertes Kerndatenmodell" in der "Objektbibliothek". Die erste Antwort (von Mac_Cain13) ist richtig, obwohl ich anscheinend einen seltsamen Fehler habe, weil mein Modell außerhalb des .modelds in Xcode liegt.
StuFF mc
@StuFFmc - Überprüfen Sie meinen Beitrag unten, um das Problem zu beheben, dass sich die xcdatamodel-Datei außerhalb des xcdatamodeld-Bundles im Xcode-Projektnavigator befindet.
Andrew
2
Wenn Sie in der Xcode-Hilfe nach "Aktuelle Version" suchen, erhalten Sie ein Rezept "Festlegen der aktuellen Version eines verwalteten Objektmodells", in dem beschrieben wird, wie Sie dies tun ...
Ein wenig abseits des Themas, aber wenn Sie diese Frage erreicht haben, um zu wissen, wie Sie eine erste neue Version Ihres Modells erstellen (wie ich es getan habe): Klicken Sie auf die Datei xcdatamodel >> Menü "Editor" >> Modellversion hinzufügen
Dadurch wird die Versionierung des Modells initiiert.
Antworten:
quelle
Wenn Sie in Xcode 4 nur eine Version Ihres Datenmodells im Abschnitt "Versioniertes Kerndatenmodell - Aktuell" des Dateiinspektors sehen, wenn Sie Ihre * .xcdatamodeld-Datei ausgewählt haben; oder Sie haben eine zweite Version Ihrer * .xcdatamodel-Datei, die außerhalb des xcdatamodeld-Bundles im Xcode-Projektnavigator angezeigt wird (siehe unten).
Um dies zu beheben:
1) Entfernen Sie die Referenzen * .xcdatamodeld und * .xcdatamodel aus Xcode, indem Sie im Projektnavigator mit der rechten Maustaste darauf klicken und auf "Löschen" klicken.
2) Wenn Sie von Xcode dazu aufgefordert werden, klicken Sie auf Nur Referenzen entfernen (sehr wichtig).
3) Starten Sie Xcode für eine gute Maßnahme neu, falls ein Caching stattfindet.
4) Fügen Sie die einzelne * .xcdatamodeld-Datei, die beide * .xcdatamodel-Dateien enthält, erneut hinzu.
Xcode sollte nun die Beziehungen erkennen und es Ihnen ermöglichen, die * .xcdatamodeld-Datei im Projektnavigator so zu erweitern, dass beide * .xcdatamodel-Dateien unter dem übergeordneten xcdatamodeld-Bundle angezeigt werden und neben dem aktuellen Modell auch ein grünes Häkchen angezeigt wird. Auf diese Weise sollten Sie auch die aktuelle Version des Datenmodells im Dateiinspektor auswählen können, anstatt nur eine Version anzuzeigen.
quelle
Für Xcode 4.2
Klicken Sie auf YourModel.xcdatamodeld
Machen Sie den Seitenbereich sichtbar
Wählen Sie unter "versioniertes Kerndatenmodell" das "aktuelle Dropdown-Feld" aus und wählen Sie Ihr Datenmodell aus.
Jetzt wird das grüne Häkchen in Ihr aktuelles Datenmodell verschoben.
quelle
Wenn Sie in der Xcode-Hilfe nach "Aktuelle Version" suchen, erhalten Sie ein Rezept "Festlegen der aktuellen Version eines verwalteten Objektmodells", in dem beschrieben wird, wie Sie dies tun ...
quelle
Ein wenig abseits des Themas, aber wenn Sie diese Frage erreicht haben, um zu wissen, wie Sie eine erste neue Version Ihres Modells erstellen (wie ich es getan habe): Klicken Sie auf die Datei xcdatamodel >> Menü "Editor" >> Modellversion hinzufügen
Dadurch wird die Versionierung des Modells initiiert.
quelle
Dies funktionierte für mich: https://developer.apple.com/library/mac/recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html
Auswahl der Kerndatenmodellversion
Jetzt funktioniert meine automatische Migration des Datenbankmodells (mit dem automatischen Migrationscode im Delegaten).
quelle
Sie können auch die Setter-Methode von CoraData verwenden ... Machen Sie
einfach so etwas ...
In Ihrem CustomCoreDataManager.m :
und rufen Sie die init-Methode so auf
quelle