Problème de rechargement de la Base Core Data
Greensource
Membre
Bonsoir!
J'ai un souci avec le lancement de mon appli qui utilise Core Data. La première fois que je la lance ça se passe bien, j'arrive à sauver et récupérer des objets via Core Data. Mais dès que je la lance une deuxième fois j'obtient l'erreur suivante:
J'ai lu sur un site que c'était normal mais je suis pas sur d'avoir compris, parce que c'est quand même bien galère et qu'avec le tuto d'Apple ça fait pas ça du tout!
Dans mon Entity j'ai un CLLocation* et un enum, peut-être mettent ils la zone?
J'ai un souci avec le lancement de mon appli qui utilise Core Data. La première fois que je la lance ça se passe bien, j'arrive à sauver et récupérer des objets via Core Data. Mais dès que je la lance une deuxième fois j'obtient l'erreur suivante:
2009-11-15 21:44:21.787 VirtualLocation[8244:207] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 UserInfo=0x441d4f0 "Operation could not be completed. (Cocoa error 134100.)", {
metadata = {
NSPersistenceFrameworkVersion = 248;
NSStoreModelVersionHashes = {
VLLocation = <3cc8e697 e879747f a154b057 b0a5af7e efbd4e03 6dc47e54 735304a0 79d6635e>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
);
NSStoreType = SQLite;
NSStoreUUID = "142E6171-BAEC-49BA-A7B0-4DD87251F0BC";
"_NSAutoVacuumLevel" = 2;
};
reason = "The model used to open the store is incompatible with the one used to create the store";
}
J'ai lu sur un site que c'était normal mais je suis pas sur d'avoir compris, parce que c'est quand même bien galère et qu'avec le tuto d'Apple ça fait pas ça du tout!
Dans mon Entity j'ai un CLLocation* et un enum, peut-être mettent ils la zone?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc il ne peut ouvrir une base dont le modèle n'est pas identique.
Soit tu fait attention à ce que le modèle soit (ait l'air ?) identique
Soit tu établi un système de conversion établissant les règle d'éventuelles conversions à effectuer dans les entités et leurs property.
En tous cas c'est ça qu'il te dit il me semble.
Je pencherai pour cette piste en effet.
Par contre j'ai un bien enum (VLLocationType) dans les attributs de mon Entity qui est donc de type int16.
Si ça peut aider j'ai le code suivant dans l'implémentation de mon Entity:
et voici le model:
Pourquoi définir une catégorie à ton ManagedObject ?
Je me demande si c'est pas là qu'est le problème ...
Et bizarre aussi cette méthode [tt]- (VLLocationType)locationType[/tt] déclarée sans valeur de retour (ni (void) ) qui renvoie tout de même une valeur.
[EDIT] Oups, je manque de repos sur ce coup là désolé (perso, je mets toujours un espace entre la déclaration du type de valeur de retour et le nom de la méthode, c'est plus lisible ... la preuve )
Es tu sûre de n'avoir effectué aucune modification de ton modèle durant tes phases de développement ? Car le modèle semble avoir changer d'après le message d'erreur.
Si c'est le cas, fait un clean all target de ton projet à partir d'Xcode (ou supprime le dossier build dans le dossier de ton projet) et supprime le fichier dans lequel sont sauvées les données dans le dossier ~/Library/Application Support/Le_Nom_De_Ton_Appli/.
Il faut à chaque fois que je supprime mon appli du simulateur.
Je vais essayer de viré un par un les attributs non-classique.
J'ai peur que si l'entité est désigné dans le model par la classe MonEntité mais sauvegardée comme MonEntité+LaCatégorie, il trouve que le résultat sauvegardé soit pas conforme au modèle.
... A moins que tu ai simplement mal renseigné le nom de la classe dans ton modèle ... ?
Et bien non, toujours cette erreur quand le programme essais de récupérer le persistantStoreCoordinator.
C'est dingue ce truc. Je vous file le screenshot hyper simple de mon model du coup.
[edit: la seule différence avec le tuto d'Apple c'est que j'ai mis la Core Data Stack dans une autre classe, vous penser que j'ai pu faire une erreur en faisant ça?]
Une autre info peut-être utilise, l'appli plante une fois sur deux. Mais vraiment une fois sur deux, j'en pleurerais presque...
Si quelqu'un passe par là et qu'il a une idée j'aimerais bien en savoir plus.
Merci en tout cas!
Ce serait pas la première fois qu'on se retrouve avec une corruption de fichier dans un projet Xcode