12
votes

Xcode ne peut pas "modifier le modèle de données de base

Après avoir ajouté un modèle de Coredata à mon projet existant en utilisant

Fichier> Nouveau> Fichier ...> Données de base> Modèle de données

Je suis incapable de modifier le modèle. Le projet comprend maintenant une référence d'emballage .xcdatamodeld, mais en cliquant dessus dans Project Navigator, a le même effet que de cliquer sur un dossier ou un groupe, l'éditeur actuel ne change pas. En cliquant sur le bouton droit de la fois sur la référence et la sélection de «Ouvrir sous>» n'ayant aucun éditeur potentiel. En outre, l'ouverture du panneau Inspecteur de fichiers ne répertorie que Paramètres de "Identity" "Adhésion cible" et "Paramètres de texte", il ne liste pas les paramètres du "modèle de données de base" ou du "modèle de données de base en version version"

Non pas que cela devrait avoir un effet sur la capacité de Xcodes de reconnaître un type de fichier, mais j'ai également référencé Coredata.framework dans des phases de construction et inclus les propriétés de données de base nécessaires dans l'Appdelegate.

Qu'est-ce que l'étrange est que j'ai ouvert le package .xcdatamodeld dans Finder pour exposer l'interne .xcdatamodel (NOTE AUCUNE FIN 'D'). Double-cliquant sur ce fichier ouvrira Xcode avec l'éditeur de modèle de données de base comme prévu.

Même Stranger est toujours, j'ai créé une nouvelle vérification de la case "Utiliser les données de base". Cela m'a permis d'éditer le modèle de données en sélectionnant la référence .xcdatamodeld dans le navigateur de projet. Par conséquent, ma machine et Xcode sont capables et configurées pour modifier des fichiers Coredata.

C'est comme si Xcode est impossible d'utiliser des données de base, à moins que le projet d'origine ait été créé avec la case à cocher "Utiliser les données de base".

Quelqu'un a-t-il expérimenté cette question, avez-vous pu résoudre ce problème, et comment?

merci!


5 commentaires

Xcode 4.5.2 ICI n'a pas ce problème dans le cas le plus simple. Y a-t-il quelque chose d'étrange sur les protections de lecture / écriture pour le fichier / package.


J'ai également ajouté un modèle à une application vide (Xcode 4.5.2), aucun problème d'édition ici. Vous n'êtes pas non plus censé modifier les fichiers avec un autre éditeur, puis Xcode.


Je cours la version 4.5 (4G182). Je n'ai pas édité les fichiers en dehors de Xcode. Je n'ai pas touché le fichier depuis que je l'ai créé.


La mise à niveau vers 4.5.2 n'a eu aucun effet. Je devrais mentionner que j'utilise des cocoapodes. Création d'un nouveau projet ou projet dans un espace de travail sans données de base, l'ajout d'un modèle de données semble fonctionner parfaitement. Existe-t-il du paramètre d'espace de travail ou qui pourrait causer cela?


Étonnamment, ce bug existe toujours dans Xcode 6 deux ans après que cela a été demandé à l'origine.


8 Réponses :


1
votes

Redémarrer Xcode prend généralement soin de ce problème.


1 commentaires

Redestarté Xcode et ma machine. Même ran lsregister -kill en vain



0
votes

Lors de la première sélection, ce comportement se produit, mais la sélection d'une autre classe puis de retour à la Datamodel permet d'éditer pour moi sur un nouveau projet sans CoreData, puis ajoutez le modèle CoreData au projet.

Juste une pensée, avez-vous ajouté une entité ou êtes-vous même capable d'accéder à la vue Datamodel?


3 commentaires

Je ne peux même pas accéder au Datamodel. Cette méthode ne fonctionne pas pour moi. XCode traite essentiellement l'emballage en tant que type de fichier inconnu.


Ce comportement se produit-il sur un nouveau projet sans Coredata ajoutant-t-il alors un modèle?


Markm, non ce n'est pas le cas. Un nouveau projet avec un modèle de données ajouté après le fait de travailler.



31
votes

s'avère que j'essaye d'ajouter le modèle de données à un groupe qui a référencé un dossier spécifique dans lequel stocker ses enfants. Ce dossier n'a toutefois pas existé. Cause Xcode pour placer le modèle de données dans la racine du projet, mais il y a en même temps la référence en tant que répertoires de 2 répertoires au-dessus de la racine du projet. Ce qui est même obligatoire, c'est que Xcode n'a pas répertorié le fichier comme manquant en l'affichant en rouge. Seules Xcode Xcode ignoraient le fichier lorsque vous avez cliqué sur le navigateur de projet, car il n'existait pas vraiment où il l'ait pensé. La morale de l'histoire est la suivante: vérifiez vos chemins de fichiers et vos chemins de groupe configurés.


2 commentaires

Incidemment, cela signifie également que le fichier de données reste si vous essayez de supprimer le modèle que vous avez ajouté - car il a le mauvais chemin de ce fichier. Doit être un bug xcode, sûrement


Semble être un bug xcode. Dans mon cas, je construisais un sous-module dans un sous-dossier. J'ai supprimé tout le dossier et j'ai ajouté (après ajout de mon modèle de données), cela a été ajouté correctement aux chemins.



30
votes

J'ai rencontré ce problème aujourd'hui et le problème était que mon fichier .xcdatamodel était emballé à l'intérieur lui-même (étrange, je sais). Voici comment je l'ai réparé:

  1. J'ai trouvé mon file.xcdatamodel fichier dans Finder.
  2. Cliquez avec le bouton droit de la souris et sélectionné Montrer le contenu du package .
  3. à l'intérieur était une autre copie de fichier.xcdatamodel . J'ai copié cela à mon bureau.
  4. J'ai ensuite glissé ce fichier en Xcode et il s'est ouvert.

    quel relief. :) J'espère que cela aidera quelqu'un d'autre.


1 commentaires

Pareil ici. La façon dont j'ai "géré" pour le faire était de copier un fichier .xcdatamodeld d'un autre projet, supprimez toutes les versions, sauf une, puis ajoutez l'emballage .xcdatamodeld au projet. Je pense que peut-être que lorsque vous ajoutez un modèle non avancé, vous devez ajouter l'intérieur .xcdatamodel, pas le .xcdatamodeld.



1
votes

Voici comment j'ai résolu le problème:

  1. dans l'arborescence de fichier XCode, supprimé le fichier .xcdatamodeld.
  2. Lorsque j'ai ouvert le dossier de projet, le fichier était là. (Xcode n'a supprimé que la référence.)
  3. Je l'ai ramené à l'arborescence de fichier Xcode, coché "Copier les éléments si nécessaire". Cela n'a pas fait de copie parce que le fichier est déjà sous le dossier du projet.

    problème résolu.


0 commentaires

4
votes

Notre problème réel était que Xcode ne pouvait pas ouvrir / valider le modèle de données lors de la création d'une nouvelle version. Signification: Avoir le premier .xcdatamodel, puis Editeur> Ajouter une version modèle ...> MyProject 2 (comme .xcdatamodel). Après quoi, le mypoject.xcdatamodel d a été créé mais ne pouvait pas être ouvert.

Après les heures d'enquête, nous avons compris que le fichier .xCurrentersion et le xcversion dans la Le fichier de projet manquait ou invalide. L'une des raisons était que la version xcdatamodel d doit être dans le dossier racine.

Solution rapide facile 1:

Créer une nouvelle version de modèle et:

  1. Définissez le chemin du dossier racine
  2. Spécifiez le groupe pour être le sous-répertoire où la version précédente est.

    le nouveau .xcdatamodel d sera maintenant travail sur xcode mais ne peut pas être déplacé nulle part ailleurs que le dossier racine .

    Solution compliquée 2:

    avoir un manège .xcdatamodel d dans un sous-dossier, HOU devez modifier manuellement le fichier de projet suivant ces étapes:

    ps : C'est la réponse la plus compliquée et le plus hacky que j'explique écrit. Je suis désolé: (

    1. Créer une nouvelle version de modèle (même s'il invalide le modèle de données) dans le même répertoire de la version précédente.
    2. Assurez-vous que le nouveau fichier .xcdatamodel d est spécifié dans votre cible (s).
    3. Ouvrez le contenu de l'emballage dans Finder et déposez toutes les versions XCDataModel vers le projet.
    4. Ouvrez le fichier projet.pbxproj dans un éditeur de texte.
    5. Recherchez les nouveaux fichiers pour tous les modèles de données et copiez leur FileID .

      Exemple: xxx

      1. Déplacez ces lignes de la section PBXBUILDFILE au début du PBXFilerEference One et mettez-les comme ceci (réutilisez le fichier fileID ). < / li>

        Exemple: xxx

        1. Rechercher maintenant le fichier mypoject.xcdatamodeld dans la section pbxbuildfile et copiez son fileref . . .

          exemple: xxx

          1. Enfin, à la toute fin du fichier project.pbxproj Créez la section xcversiongroup et réutilisez le fileref du xcdatamodel d et tous fileID .

            exemple (sans le // commentaires): xxx

            1. Vous devriez maintenant pouvoir ouvrir le fichier xcdatamodel d de xcode maintenant du sous-dossier souhaité.
            2. Supprimez maintenant les références supplémentaires des fichiers XCDataModel simples de Xcode (celles créées au début).

              Désolé pour la réponse longue ... Mais problème résolu: D


1 commentaires

Je l'ai fait légèrement différemment, mais cela semble vraiment comme le seul moyen de le réparer sans avoir à déplacer le modèle à la racine du projet à chaque fois que l'on doit modifier (voir la réponse de @tamarackbob). Supprimer et ajouter le dossier Le fichier n'a pas résolu le problème. Cela ressemble vraiment à un bug de Xcode.



0
votes

Je l'ai résolu comme ceci en xcode:

Cliquez avec le bouton droit de la souris sur votre projet (pas votre dossier de projet, je veux dire que l'une avec l'icône bleue xcode !), de sélectionner "nouveau fichier" et choisissez la droite Dossier pour enregistrer le modèle de données.

Remarque: Cliquez sur "Nouveau fichier" sur le dossier de projet lui-même ou sur l'un de ses sous-dossiers ne fonctionnant pas d'une manière ou d'une autre.


0 commentaires

2
votes

Ceci est toujours un problème dans Xcode 8.

Pour moi, la solution simple consistait à faire glisser (dans le volet Navigator du fichier de projet - côté gauche de Xcode) Mon fichier .xcdatamodeld de son (jaune) Dossier sous forme de groupe jusqu'au niveau supérieur sous l'application (celui-ci avec l'icône bleue). Après cela, il s'est ouvert immédiatement avec l'éditeur.

J'ai retesté en le faisant glisser vers le sous-groupe, et encore une fois, il ne s'ouvrirait pas dans l'éditeur, puis de retour au niveau supérieur et il s'est ouvert correctement ... Je ne sais pas pourquoi cela se passe, mais au moins je peux le modifier à nouveau.

J'espère que cela aide quelqu'un.


0 commentaires