Xcode 4, version du modèle de données de base - Définir la version actuelle

183

Je ne sais pas comment exécuter la fonction suivante dans Xcode 4 pour définir le modèle à utiliser après la création d'un modèle versionné.

Conception> Modèle de données> Définir la version actuelle

Nate Potter
la source
15
J'aurais aimé pouvoir voter chaque fois que je dois le renvoyer.
erik le

Réponses:

329
  1. Cliquez sur le fichier .xcdatamodelId de niveau supérieur (celui qui contient les nombreuses versions de .xcdatamodel en tant qu'enfants).
  2. Assurez-vous que le panneau latéral Utilitaires est visible (sinon cliquez sur le troisième bouton "Afficher" en haut à droite de la fenêtre).
  3. Dans le volet latéral Utilitaires, sélectionnez l'inspecteur de fichiers (petite icône de papier en haut à gauche)
  4. Vous verrez «Modèle de données de base versionné» en tant que groupe, il vous suffit donc de modifier le menu déroulant «Actuel» pour votre nouvelle version.
Ben
la source
2
Super merci! Également trouvé ce même volet sous Affichage> Utilitaires> Inspecteur de fichiers
Nate Potter
s'habituer encore aux changements entre Xcode 3 et 4, merci!
Chris
15

Dans Xcode 4, si vous ne voyez qu'une seule version de votre modèle de données dans la section «Modèle de données de base versionné - Actuel» de l'inspecteur de fichiers lorsque votre fichier * .xcdatamodeld est sélectionné; ou vous avez une 2ème version de votre fichier * .xcdatamodel affichée en dehors du bundle xcdatamodeld dans le navigateur de projet de Xcode, lisez ci-dessous.

Pour résoudre ce problème:

1) Supprimez à la fois les références * .xcdatamodeld et * .xcdatamodel de Xcode en faisant un clic droit dessus dans le navigateur de projet et en appuyant sur "Supprimer".

2) Lorsque vous y êtes invité par Xcode, cliquez sur Supprimer les références uniquement (très important).

3) Redémarrez Xcode pour une bonne mesure au cas où une mise en cache serait en cours.

4) Ajoutez à nouveau le fichier * .xcdatamodeld unique qui contient les deux fichiers * .xcdatamodel.

Xcode devrait maintenant reconnaître les relations et vous permettre de développer le fichier * .xcdatamodeld dans le navigateur de projet pour afficher les deux fichiers * .xcdatamodel sous le bundle xcdatamodeld parent, en affichant également une coche verte à côté du modèle actuel. Cela devrait également vous permettre de sélectionner la version actuelle du modèle de données dans l'inspecteur de fichiers au lieu de n'afficher qu'une seule version.

Andrew
la source
Et ainsi finit le grattage de la tête.
Steve Madsen
J'ai accidentellement changé le xcdatamodelid parent en bundle d'application et cette solution a aidé!
morph85
4

Pour Xcode 4.2

  1. Cliquez sur YourModel.xcdatamodeld

  2. Rendre le volet latéral visible

  3. Sous "modèle de données de base versionné", sélectionnez la "liste déroulante actuelle", sélectionnez votre modèle de données.

La coche verte est maintenant déplacée vers votre modèle de données actuel.

Dax
la source
Il n'y a rien de tel que «modèle de données de base versionné» dans la «bibliothèque d'objets». La première réponse (de Mac_Cain13) est correcte, bien que je semble avoir un bogue étrange avec mon modèle étant en dehors du .modeld dans Xcode.
StuFF mc
@StuFFmc - Consultez mon message ci-dessous pour résoudre le problème du fichier xcdatamodel en dehors du bundle xcdatamodeld dans le navigateur de projet de Xcode.
Andrew
2

La recherche dans l'aide de Xcode pour "Version actuelle" donne une recette "Définition de la version actuelle d'un modèle d'objet géré" qui décrit comment procéder ...

mmalc
la source
1

Un peu hors sujet, mais si vous avez atteint cette question pour savoir comment créer une première nouvelle version de votre modèle (comme je l'ai fait): cliquez sur le fichier xcdatamodel >> Menu "Editeur" >> Ajouter une version de modèle

Cela lancera la versionning du modèle.

Ben G
la source
-1

Vous pouvez également utiliser la méthode setter de CoraData ... Faites
quelque chose comme ça ...

Dans votre CustomCoreDataManager.m :

#import "ObjectiveRecord.h"

et appelez la méthode init comme ceci

- (instancetype)init {

    self = [super init];

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

    return self;
}
John
la source