2015-03-22 3 views
0

В последнем обновлении моего приложения я изменил Data Data Modell CoreData. К сожалению, я забыл о миграции, и я потерял исходный код старой версии. Поэтому у меня теперь есть проблема, чтобы исправить ситуацию. Прежде всего - сохраненные данные в CoreData не важны, я думал об удалении файла momd, но проблема здесь в том, что приложение Crashes и ему требуется перезапуск. Возможно ли правильно удалить файл и создать новый без сбоев?Модель данных с изменением данных ядра без миграции

Вот код, как мне удалось удалить файл momd. Я делаю это в методе AppDelegates - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions.

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"v1.0.4"]) { 

    NSFileManager * fileManager = [NSFileManager defaultManager]; 
    NSURL * storeURL = [[NSBundle mainBundle] URLForResource:@"Vocabulary" withExtension:@"momd"]; 
    NSError * error; 

    if ([fileManager fileExistsAtPath:storeURL.path]) 
     [fileManager removeItemAtURL:storeURL error:&error]; 

} 
+1

Почему вы не удаляете файл .sqlite? – Wain

+0

Что сказал @Wain. Если вам не нужны старые данные, удаляемая вещь - это файл '.sqlite'. Другой альтернативой является просто создать новый файл '.sqlite' с другим именем, что оставляет вам возможность вручную обращаться к старым данным, если вы когда-нибудь захотите. – aroth

ответ

0

Большое спасибо, я удаляю файл .sqlite сейчас, как это, и он работает, как я хотел! Благодаря @Wain и @aroth

NSFileManager * fileManager = [NSFileManager defaultManager]; 
    NSURL * storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Vocabulary.sqlite"]; 
    NSError * error; 
    if ([fileManager fileExistsAtPath:storeURL.path]) 
     [fileManager removeItemAtURL:storeURL error:&error]; 
Смежные вопросы