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.

Design> Datenmodell> Aktuelle Version einstellen

Nate Potter
quelle
15
Ich wünschte, ich könnte dies jedes Mal abstimmen, wenn ich es erneut referenzieren muss.
Erik

Antworten:

329
  1. Klicken Sie auf die .xcdatamodelId-Datei der obersten Ebene (die die vielen Versionen von .xcdatamodel als untergeordnete Dateien enthält).
  2. Stellen Sie sicher, dass der Seitenbereich Dienstprogramme sichtbar ist (wenn nicht, klicken Sie oben rechts im Fenster auf die dritte Schaltfläche "Ansicht").
  3. Wählen Sie im Seitenbereich Dienstprogramme den Dateiinspektor aus (kleines Papiersymbol oben links).
  4. Sie sehen "Versioned Core Data Model" als Gruppe. Ändern Sie einfach das Dropdown-Menü "Current" in Ihre neue Version.
Ben
quelle
2
Super, danke! Das gleiche Fenster wurde auch unter Ansicht> Dienstprogramme> Dateiinspektor
Nate Potter am
Ich gewöhne mich immer noch an die Änderungen zwischen Xcode 3 und 4, danke!
Chris
15

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.

Andrew
quelle
Und damit endet das Kopfkratzen.
Steve Madsen
Ich habe versehentlich das übergeordnete xcdatamodelid in das Anwendungspaket geändert und diese Lösung hat geholfen!
Morph85
4

Für Xcode 4.2

  1. Klicken Sie auf YourModel.xcdatamodeld

  2. Machen Sie den Seitenbereich sichtbar

  3. 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.

Dax
quelle
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 ...

mmalc
quelle
1

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.

Ben G.
quelle
-1

Sie können auch die Setter-Methode von CoraData verwenden ... Machen Sie
einfach so etwas ...

In Ihrem CustomCoreDataManager.m :

#import "ObjectiveRecord.h"

und rufen Sie die init-Methode so auf

- (instancetype)init {

    self = [super init];

    if (self) {           
        [[CoreDataManager sharedManager] setModelName:@"YourModelName"];
    }

    return self;
}
John
quelle