2010-10-25 25 views
6

J'ai donc créé une nouvelle version de mon modèle de données et créé un champ facultatif précédemment non facultatif (en lui donnant une valeur par défaut). Selon la documentation, cela signifie que ma migration est éligible pour une migration légère et automatique.Migration légère Core Data: impossible de trouver ou de déduire automatiquement le modèle de mappage pour la migration

I des options a également ajouté que permettent quand j'ouvrir le magasin, également par la documentation:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 

        [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 

        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

Quand mon application commence, cependant, je reçois l'erreur suivante: « Vous ne trouvez pas ou automatiquement modèle de mappage inféré pour la migration ".

Est-ce que quelqu'un sait quel pourrait être le problème ici? Toute aide est la bienvenue, merci!

+0

Devez-vous également spécifier une valeur par défaut pour l'attribut si vous le rendez non-optionnel? –

+0

Je ne me dérange pas le neg. Ça me dérange qu'on ne me dise pas pourquoi. Quel paraisseux. –

+0

Ahh, probablement parce que j'ai répondu à votre question dans ma description: "en lui donnant une valeur par défaut". – elsurudo

Répondre

1

Vous avez probablement regardé, mais sinon ... Detecting a Lightweight Core Data Migration

En termes de tout autre code de débogage, j'ai trouvé ce commentaire utile:

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyDataStore.sqlite"]]; 

NSError *error = nil; 
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType 
                   URL:storeUrl 
                   error:&error]; 

if (!sourceMetadata) 
    { 
    DLog(@"sourceMetadata is nil"); 
    } 
else 
    { 
    DLog(@"sourceMetadata is %@", sourceMetadata); 
    } 

Et, c'est enfin une sorte de Douleur, mais dans le Finder, vous pouvez "Afficher le contenu du paquet" pour votre application, puis trouver un dossier appelé .momd et dans ce fichier se trouve un fichier appelé "VersionInfo.plist". Cela a été utile pour identifier ce que vous avez et où vous essayez d'aller.

Enfin, vous pouvez essayer de créer un modèle de mappage et voir si cela fonctionne. J'ai lutté avec les problèmes de migration pendant des semaines, d'où la longue liste de tentatives de débogage désespérées.

+0

Je viens de commencer avec le développement de l'iPhone et j'ai rencontré ce problème. J'ai essayé votre code et il affiche une certaine valeur de 'sourceMetadata'. Comment puis-je l'utiliser pour déboguer le problème que j'ai? – vikmalhotra

+0

@ShiVik - cela dépend du problème que vous déboguez ;-) Si vous postez une question, je vais essayer d'aider. Généralement, cependant, cela m'a aidé à m'assurer que les bons modèles étaient utilisés et n'avaient pas été corrompus par inadvertance. Cela m'a également aidé à mieux comprendre les données de base. – westsider

+0

voici ma question http://stackoverflow.com/q/4745886/206613 – vikmalhotra