2012-01-02 6 views
20

Prawie skończyłem z wersją 1.1 mojej pierwszej aplikacji na iOS, w niej dokonałem dwóch niewielkich zmian w moim podstawowym modelu danych. Bardziej szczegółowe, dodałem dwa atrybuty do jednej z moich tabel. To moja pierwsza podstawowa aplikacja do obsługi danych, a zatem moje pierwsze podstawowe aktualizacje danych do aplikacji na żywo, a ja jestem trochę nerwowy, jeśli chodzi o kod wysyłkowy, który może nie działać dla moich obecnych użytkowników. Ponieważ jest to niewielka aktualizacja, domyślam się, że zrobi to automatyczna metoda migracji Jabłek, ale nie chcę zgadywać.Zaktualizuj aplikację iOS ze zaktualizowanym modelem danych podstawowych

Odpowiedni kod wygląda następująco:

NSError *error = nil; 
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) 
{ 

    //NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
}  

w 1,1 Dodałem NSDictionary *options.

moim zdaniem kontrolera I upewnij się, że potrzebne wiersze te nie jest zerowa tak:

if (currentPage.inputType == @"drawing") { 
    [pageView changeToDrawing]; 
} else if (currentPage.inputType == @"text") { 
    [pageView changeToText]; 
} else { 
    currentPage.inputType = @"text"; 
    [pageView changeToDrawing]; 
} 

Zasadniczo, to te zmiany wystarczy czy muszę zrobić coś innego?

Odpowiedz

24

Here is a very helpful article w odniesieniu do wersjonowania danych podstawowych, który odpowiada na twoje pytanie.

Podsumowując, w kilku słowach konieczne będzie dodanie do projektu nowej wersji modelu. Jest to konieczne w procesie migracji.

Edit

link powyżej zmieniła i przekieruje Cię do poniższego linku: Core Data Model Versioning and Data Migration

Jeśli wszystko inne zawiedzie, Google: Core Data Model Versioning and Data Migration apple developer.

+0

Dziękuję za odpowiedź, mam jedno powiązane pytanie. Dodałem atrybuty przed utworzeniem nowej wersji modelu, czy powinienem usunąć nowe atrybuty z mojej wersji 1.0 i mieć je tylko w wersji modelu danych 2.0, czy to nie ma znaczenia? Dzięki! – Anders

+2

Absolutnie powinieneś usunąć je z wersji 1.0 i dodać do następnej wersji. Ostatnio byłem trochę przez to. 1.0 powinno być * dokładnie * takie samo jak to, co jest obecnie wdrażane, inaczej otrzymasz wyjątek. Obejmuje to zarówno atrybuty, jak i relacje. – Jeremy

+0

Ah, dzięki. Mam go do pracy. Zrobiłem, jak sugerujesz. :) – Anders

Powiązane problemy