6
votes

Problèmes de migration avec UimanageDDocument

J'ai commencé à utiliser Coredata dans ma demande après les cours de Stanford CS193P concernant l'utilisation de la nouvelle classe UIManageDDocument de classe 5 de iOS 5. L'approche elle-même est assez simple, mais je ne comprends pas comment traiter les modifications du modèle que je continue à faire. C'est comme ça que j'instantiens mon objet UimanageDDocument (à l'intérieur de l'Appdelegate, de sorte que toutes les autres classes peuvent l'utiliser):

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'


1 commentaires

J'ai aussi suivi Stanford CS193P et je ressens la même erreur.


3 Réponses :


2
votes

Avant de modifier votre modèle de données de base, vous devez "ajouter la version modèle".

1. Sélectionnez le fichier de modèle d'origine. (E.G. YourProject.xcdatamodel)

2. "Editeur" -> "Ajouter une version modèle ...". Ajoutez ensuite une nouvelle version modèle (par exemple 2.0)

3. Vous obtiendrez un nouveau fichier de modèle. (E.G. YourProject 2.0.xcdatamodel). Modifier-le.

4. Modifiez la version du modèle actuelle. Sélectionnez le fichier Top .xcdtatmodel -> "Voir" -> "Utilitaires" -> "Afficher l'inspecteur de fichiers". Recherchez le modèle "Modèle de données de base Versioned" et choisissez la bonne version que vous souhaitez modifier.

Cela m'a également dérangé depuis longtemps. J'espère que cette façon peut vous aider ^^


3 commentaires

Salut. Merci pour la réponse. Semble comme le bon moyen d'y aller. Quoi qu'il en soit, après avoir suivi votre suggestion, je continue à obtenir des problèmes de migration: *** Application de résiliation due à une exception non capturée 'NsinvalidargumentException', raison: "Impossible de fusionner des modèles avec deux entités différentes nommées" GestionedDild "" où gérées est l'une des entités dans mon modèle. J'ai trouvé ce Entrée Mais cela n'utilise pas l'approche Samy UimanagedDocument comme j'ai besoin ...


Je reçois le même problème. Toute la documentation indique que l'ajout du "persistanceStoreOptions" est la voie à suivre. Mais je reçois un retour nul de UimanageDDocument avec les mêmes messages d'erreur. La suppression du magasin n'est pas une option valide pour moi, car je supporte une application publiée.


Juste un autre point de données ... J'ai créé un exemple de projet qui initiative les données de base via UimanageDDocument exactement de la même manière que je fais dans mon application, mais le projet exemple semble migrer simplement (même sans aucune persistance de persévérance).



0
votes

Il y a une solution vraiment simple à votre problème. Effacez simplement l'application du simulateur ou du périphérique (touchez l'icône de l'application pendant quelques secondes et appuyez sur la croix qui apparaît lorsque les icônes de l'application commencent à Wiggling). De cette façon, Xcode met à jour l'UIManageDDocument UIManaged de votre application.


3 commentaires

Et que si l'application est déjà dans le magasin. Vous affichez une vue d'alerte et demandez aux utilisateurs de réinstaller votre application?


Je pense que la réponse du ph-k est ce que le questionneur a besoin depuis qu'il suit un didacticiel, pas pour la publication d'une application au magasin :)


Cela ne m'a pas aidé. Le magasin persistant n'est pas disponible, mais je l'ai clairement!



0
votes

Assurez-vous que vous n'aviez pas MISTYPE NSDOCumentDirectory comme NSDocumentationDirectory.

   NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];


0 commentaires