2010-10-25 13 views
6

Stworzyłem więc nową wersję mojego modelu danych i utworzyłem wcześniej opcjonalne pole nieobowiązkowe (nadając mu wartość domyślną). Zgodnie z dokumentacją powinno to oznaczać, że moja migracja kwalifikuje się do lekkiej, automatycznej migracji.Lekka migracja danych podstawowych: Nie można znaleźć ani automatycznie pobrać modelu odwzorowania do migracji.

Dodałem też opcje, które pozwalają na to, kiedy otworzyć sklep, również za dokumentacji:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 

        [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 

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

Kiedy moja aplikacja zaczyna jednak, pojawia się następujący błąd: „Nie można odnaleźć lub automatycznie wnioskować model mapowania migracji ".

Czy ktoś wie, na czym polega problem? Jakakolwiek pomoc się przyda, dzięki!

+0

Czy należy również podać domyślną wartość atrybutu, jeśli nie jest to opcja opcjonalna? –

+0

Nie mam nic przeciwko neg. Nie mam pojęcia, dlaczego. Jak lame. –

+0

Ahh, prawdopodobnie dlatego, że odpowiedziałem na twoje pytanie w moim opisie: "podając domyślną wartość". – elsurudo

Odpowiedz

1

Pewnie wyglądało na to, ale jeśli nie ... Detecting a Lightweight Core Data Migration

Pod względem drugiej debugowanie kodu, znalazłem to pomocne:

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); 
    } 

i wreszcie, jest to rodzaj ból, ale w Finderze możesz "pokazać zawartość pakietu" dla swojej aplikacji, a następnie znaleźć folder o nazwie .momd, a w nim plik o nazwie "VersionInfo.plist". Pomogło to w określeniu, co masz i gdzie próbujesz przejść.

Na koniec można spróbować utworzyć model odwzorowania i sprawdzić, czy to działa. Przez tygodnie zmagałem się z problemami związanymi z migracją, stąd długa lista desperackich prób debugowania.

+0

Właśnie zacząłem od rozwoju iPhone'a i natknąłem się na ten problem. Wypróbowałem twój kod i wyświetla on pewną wartość 'sourceMetadata'. Jak mogę użyć tego do debugowania problemu, który mam? – vikmalhotra

+0

@ShiVik - to zależałoby od problemu, z którym debugujesz ;-) Jeśli napiszesz pytanie, postaram się pomóc. Ogólnie rzecz biorąc, było to pomocne dla zapewnienia mi, że odpowiednie modele były w użyciu i nie zostały przypadkowo uszkodzone. Pomogło mi to również w ogólnym zrozumieniu podstawowych danych. – westsider

+0

Oto moje pytanie http://stackoverflow.com/q/4745886/206613 – vikmalhotra

Powiązane problemy