Comment supprimer une version de modèle de données ancienne / inutilisée dans Xcode

163

Comment puis-je supprimer un ancien modèle de données dans Xcode? L'option est désactivée dans le menu. (Les modèles que je souhaite supprimer n'ont pas été rendus publics - ce sont des modèles de développement provisoires.)

SAHM
la source
Voulez-vous dire que le choix "Supprimer" dans le menu "Edition" est désactivé (alors que votre ancien fichier de modèle de données est sélectionné dans l'inspecteur de fichiers)? Ou voulez-vous dire autre chose?
Michael Dautermann
Oui, le choix de suppression dans le menu Edition, ainsi que dans le menu contrôle-clic droit (et tout menu que je peux trouver) est désactivé. Je sais que certaines personnes vont à un xcode précédent pour supprimer les anciennes versions / inutilisées, mais je n'en ai pas installé.
SAHM
Michael, êtes-vous capable de faire cela dans xCode 4?
SAHM du
oui ... je n'ai jamais vu cette option de menu "supprimer" désactivée pour aucun de mes projets XCode 4.
Michael Dautermann
Sepcifically pour le xcdatamodel? D'autres ont eu le même problème avec la suppression de xcdatamodels XCode 4 .. Je n'ai tout simplement pas vu de solution publiée.
SAHM du

Réponses:

374

C'est un hack, mais cela a fonctionné pour moi:

  1. Définissez la version actuelle du modèle dans Xcode sur celle que vous souhaitez conserver
  2. Supprimez le .xcdatamodeld de votre projet (clic droit -> Supprimer -> Supprimer la référence uniquement )
  3. Afficher le contenu du package .xcdatamodeld dans le Finder (clic droit -> Afficher le contenu du package)
  4. Supprimez le (s) fichier (s) .xcdatamodel dont vous ne voulez plus
  5. Ajoutez à nouveau le fichier .xcdatamodeld à votre projet

Cela élimine le besoin de modifier manuellement l'un des fichiers de métadonnées du projet.

David Avendasora
la source
2
J'ai essayé cette technique et j'ai constaté qu'en raison de la façon dont mes versions de modèle étaient nommées, la version du modèle était mal triée et la mauvaise version par défaut était sélectionnée lorsque j'ai ré-ajouté le fichier xcdatamodel dans le projet. Cela peut être dû au fait que j'ai jusqu'à 38 versions de modèle et que je n'ai pas changé le nom de la version par défaut, donc les versions sont nommées "MY_APP 37.xcdatamodel". Je voulais supprimer 38. Lors de l'importation, il a été tiré dans l'ordre lexical, ce qui signifie que "MY_APP 10.xcdatamodel" était le premier et sélectionné par défaut. Pas idéal dans mon cas.
Mike
1
Mike - même problème pour moi, même si j'ai pu réorganiser dans project.pbxproj dans un éditeur de texte sans drame majeur. Toujours pas idéal.
Ian Kershaw
1
Cela ne fonctionne pas avec Xcode 5.1.1. Auparavant, avec de nombreux petits changements de modèle et des numéros de version de modèle incrémentés, la migration automatique légère fonctionnait correctement. Cependant, après avoir essayé de supprimer tous les modèles "de développement uniquement" superflus en utilisant cette approche, j'obtiens l'erreur: "Erreur: Impossible de trouver ou de déduire automatiquement le modèle de mappage pour la migration".
Dalmazio le
1
en 6.4, il n'y a pas d'option pour supprimer les références. Il a simplement été supprimé. Le reste des étapes semblait fonctionner
noobsmcgoobs
1
Cela semble fonctionner dans Xcode 10.2.1. Ma migration a été quelques changements de nom d'attribut donc rien de majeur.
Gavin
35

Je viens de trouver le besoin de faire ça. J'ai créé une nouvelle version de modèle, puis j'ai réalisé que je n'en avais pas besoin après tout. J'ai été surpris de constater qu'il n'y avait aucun moyen de le supprimer (que je pouvais trouver) de Xcode. Pourtant, pour le supprimer, j'ai fait ce qui suit:

Je me suis d'abord assuré que ce n'était pas ma version actuelle du modèle. Ensuite, je suis allé au Finder et j'ai trouvé mon fichier * .xcdatamodeld. Cliquez avec le bouton droit de la souris et affichez le contenu du paquet à ce sujet. Vous y trouverez le fichier du modèle réel et vous pourrez le supprimer.

Cela ne le supprime toujours pas de Xcode et il apparaîtra en rouge dans les fichiers et les groupes. Pour éviter que cela ne se produise, retournez au Finder et à Afficher le contenu du package sur votre fichier principal * .xcodeproj (vous voudrez peut-être vous assurer que vous en avez d'abord une sauvegarde). Là, ouvrez et éditez project.pbxproj faites une recherche sur le nom de la version de votre modèle, dans mon cas "intervalle 8". Pour moi, il est apparu sur deux lignes distinctes. J'ai supprimé ces lignes et maintenant elles sont complètement supprimées de Xcode.

Daniel Wood
la source
1
@Daniel_Wood, oui, j'avais trouvé comment le faire manuellement aussi, mais attention. Cela peut causer des problèmes sur toute la ligne ... J'ai dû refaire cela plusieurs fois, cela finit également par basculer parfois les versions actives et non actives, puis lorsque vous réinitialisez la bonne version, cela ne la déplace pas vers le haut de la liste (parfois) qui pose plus de problèmes! Merci beaucoup pour votre contribution. Cela semble bizarre qu'ils auraient supprimé cette fonctionnalité - nous ne devrions jamais avoir à entrer dans le fichier .xcodeproj!
SAHM
2

Cela a fonctionné pour moi dans XCode 10.3 sans que le problème de commande ne se produise lors de la suppression du modèle entier et de son ajout:

  1. Sélectionnez une version de modèle autre que celle que vous souhaitez supprimer.
  2. Depuis XCode, cliquez avec le bouton droit sur le fichier .xcdatamodeld et sélectionnez «Afficher dans le Finder».
  3. Fermez XCode.
  4. Dans le Finder, cliquez avec le bouton droit sur le même fichier et sélectionnez «Afficher le contenu du paquet».
  5. Notez le nom du modèle que vous souhaitez supprimer, puis du Finder, supprimez-le.
  6. Toujours dans le Finder, accédez au fichier de projet (.xcodeproj).
  7. Cliquez avec le bouton droit et ouvrez avec Atom ou tout autre éditeur.
  8. Dans le volet «Projet», ouvrez le fichier project.pbxproj.
  9. Supprimez toutes les lignes contenant le nom du modèle que vous avez supprimé (exemple: «ABC 17.xcdatamodel»). Vous trouverez deux lignes similaires aux suivantes:

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; chemin = " ABC 17.xcdatamodel "; sourceTree = ""; };

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /,

    Notez que si vous trouvez une troisième ligne, ce sera quelque chose comme:

    currentVersion = 9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /;

    Cela signifie qu'il s'agit du modèle actuellement sélectionné. Ne supprimez jamais cette ligne. Changez simplement le texte pour une autre version du modèle.

  10. Rouvrez XCode.

Tony
la source
-4

Ma réponse n'est pas du tout spécifique à un problème, mais elle est rapide et fonctionne. Pour ceux qui utilisent git. Vous pouvez simplement annuler les modifications non organisées.

git stash save --keep-index

Ensuite, vous pouvez déposer cette réserve avec une git stash dropcommande si vous le souhaitez.

RaffAl
la source