6
votes

Impossible de créer un NSPersistentTorecoordinator avec un modèle NIV après avoir supprimé l'application de l'appareil

Je reçois un 'Impossible de créer un NSPERSISTENTSTORECOORDINATEUR avec une erreur de modèle NIL' après avoir supprimé mon application à partir de l'appareil. Je teste une application iPhone dans un appareil iPad. J'ai mis ce code pour vérifier si j'ai le fichier dans appdelegate.m : xxx

Le problème est que [nsmanagedObjectModel initwithcontentsofurl] retourne la valeur nil. J'ai fait les choses suivantes, sans succès:

  1. Modifier l'instanciation de ManagedObjectModel avec ce __ ManagedObjectModel = [NSMANDAGEODOBJOURMODEL MERGESTMOFFROMBUNDLES: NIL];
  2. Dossier de construction nettoyé et projet nettoyé
  3. Redémarragé Xcode
  4. Ordinateur redémarré
  5. a changé "MOMD" à "MOM"
  6. .xcdatamodeld est dans la copie des ressources et compiler des sources
  7. renommé .xcdatamodeld et le projet Xcode nettoyé et fermé plusieurs fois
  8. éteint et sur l'appareil
  9. Dossiers supprimés de: $ CD / Utilisateurs / John / Bibliothèque / Développeur / XCode / DeriveData
  10. Nom SQLite modifié pour forcer la génération de la base de données
  11. Application supprimée (à nouveau) de Devine

    Je cherche la solution pendant des heures et je ne peux toujours pas le trouver.


9 commentaires

Est-ce que ça marche sur le simulateur? Pouvez-vous ouvrir le fichier .xcdatamodeld dans xcode?


Alan, je suis capable d'ouvrir le fichier .xcdatamodeld en Xcode, mais l'application ne fonctionne pas dans le simulateur. Il lance, mais affiche uniquement un écran noir.


Je pense avoir trouvé quelque chose ... Je viens de réaliser que je n'avais pas supprimé tous les fichiers vivant dans / users / john / bibliothèque / développeur / xcode / dérivédata , alors quand j'ai fait cela Le simulateur s'est bien passé, même le managementObjectmodel. Y a-t-il un moyen de supprimer ces fichiers dans l'appareil?


La suppression de l'application de l'appareil doit supprimer les fichiers.


Maintenant, l'application se lance dans le simulateur (uniquement si je supprime DeriveData et réinitialiser le contenu et les paramètres de réinitialisation), mais je reçois le même ManagedObjectModel erreur.


Si le fichier existe à l'URL, alors la meilleure estimation est un modèle corrompu. Pouvez-vous revenir à la révision préalable dans la version de la version?


Donc, ce que vous devriez faire est de créer un nouveau projet de démonstration (contrôleur d'affichage unique). Copiez votre modèle sur ce projet et ajoutez le code ci-dessus. Exécutez-le quelques fois pour être sûr qu'il échoue comme votre projet principal. Zip It up et mettez sur Dropbox, puis mettez à jour votre question avec un lien vers le projet.


Il semble qu'il n'y ait pas de fichier .mom dans le répertoire .momd . De plus, il n'y a pas de .xcdatamodeld et il semble que Xcode ne trouve pas le .xcdatamodel qui existe dans le projet. Je vais essayer de résoudre le problème en ajoutant un .xcdatamodeld .


Je viens de poster la solution. Les problèmes avec le simulateur étaient des problèmes Xcode, je viens de mettre à jour 4,5 et tout ce qui concerne l'iPhone Simulator fonctionne bien.


4 Réponses :


15
votes

Enfin, après deux jours, essayez de résoudre ce problème, j'ai trouvé la solution ici:

Comment créer le dossier magique .xcdataModeld / paquet?

Je termine maintenant un projet que d'autres développeurs ont commencé, et il semble qu'il n'avait pas poussé les dernières modifications au représentant, mais ces modifications étaient dans l'application dans l'appareil et lorsque j'ai supprimé l'application que j'ai supprimée. Le bon .xcdatamodeld fichier. Le problème était que j'avais juste un fichier myapp.xcdatamodel dans le projet, et c'est la raison d'avoir un dossier vide MOMD , semble-t-il.

Afin de créer la bonne hiérarchie du modèle de données, la solution était assez facile:

  1. Sélectionnez le MyApp.XCDatamodel
  2. aller à l'éditeur> Ajouter une version modèle ...

    Et cet intégré le fichier myapp.xcdatamodel dans myapp.xcdatamodeld . Maintenant, le dossier MOMD a les fichiers MOM et l'application s'exécute OK. Le seul problème est maintenant que j'ai deux myapp.xcdatamodel , un avec une icône sélectionnée verte, mais à la fois avec le même contenu, donc aucun problème.


0 commentaires

1
votes
 NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"select xcdatamodeld" withExtension:@"momd"];
select exact url for resource name..

0 commentaires

0
votes

C'est relativement simple.

Si vous avez un fichier XCDatamodel sans versions: utilisez l'extension "MOM" dans votre déclaration de gestionObjectModel. Si votre XCDatamodel a des versions, vous devez utiliser «MOMD».


0 commentaires

2
votes

J'ai sauvegardé pour construire ma première application iOS à nouveau. Aujourd'hui, j'ai eu cette erreur: "Impossible de créer un NSPersistentTorecoordinateur avec un modèle NIL". En fait, c'est facile à réparer. Veuillez faire cette ligne de code:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TipRecord" withExtension:@"momd"];


0 commentaires