2015-03-26 3 views
2

Мое приложение находится в прямом эфире в магазине приложений. Я сделал обновление с изменениями в основной модели данных. Я следил за миграцией основных данных на веб-сайте Apple dev.Ошибка миграции данных ядра Ошибка какао 134130 Не удается найти модель для исходного хранилища

  • Добавить новую версию модели в Xcode
  • Внести изменения в новой версии модели
  • Выберите параметр, чтобы использовать новую версию для модели (новая версия модели имеет зеленый флажок)
  • Добавить варианты, когда добавляют SQLite файл в постоянное хранилище

Вот код:

NSString *momdPath = [[NSBundle mainBundle] pathForResource:@"PropertiesModel" ofType:@"momd"]; 
    model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:momdPath]]; 

// model = [NSManagedObjectModel mergedModelFromBundles:nil]; 

    psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; 

    NSString *path = [self itemArchivePath]; 
    NSURL *storeURL = [NSURL fileURLWithPath:path]; 

    NSError *error = nil; 
    NSDictionary *options = @{ NSMigratePersistentStoresAutomaticallyOption : @(YES), 
           NSInferMappingModelAutomaticallyOption : @(YES), 
           NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}}; 
    if (![psc addPersistentStoreWithType:NSSQLiteStoreType 
          configuration:nil 
            URL:storeURL 
           options:options 
            error:&error]) { 
     CLS_LOG(@"store URL: %@ \n options: %@ \n error: %@",storeURL,options,error); 
     [NSException raise:@"Open failed" format:@"Reason: %@, Full Error: %@", [error localizedDescription],error]; 
    } 

    // Create the managed object context 
    context = [[NSManagedObjectContext alloc] init]; 
    [context setPersistentStoreCoordinator:psc]; 

Я продолжаю сталкиваться с этой ошибкой, что не может найти мою оригинальную (старую версию) модель. Странно, когда я тестировал его во время разработки, он работал. Я вышел в магазин приложений, и теперь он рушится на всем устройстве моего пользователя.

Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error 134130.)" UserInfo=0x170671dc0 {URL=file:///var/mobile/Containers/Data/Application/68165624-8866-4722-8472-F371A1202A83/Documents/DIYLandLord.data, metadata={ 
    NSPersistenceFrameworkVersion = 519; 
    NSStoreModelVersionHashes =  { 
     Contractor = <6e29455a 13768a19 a9a4a2da 1d8d492e b3cc023d bc06cb0d 298b56e1 b44fba9f>; 
     Expense = <847aa2e8 da0a2730 4b0a70a2 2051ed2c 09ece5c4 e1a39c10 a42f0aa2 d5b79ad4>; 
     InAppPurchase = <51dc7a31 415ba244 9c175d8f e14f6948 7ebec6a3 463d2995 3ad0b60b 8bd06f7d>; 
     Owner = <2eaaaa38 ff6c4d19 6bb2621b 91a2c61a 9f5e564e 4703c68c 880f8ab4 4e1d2408>; 
     Payment = <e92d19bd 82637935 88cf8493 e0c73ddc d1ba245e 0d1e49e4 8c6bc876 e9a97372>; 
     Property = <456365b5 9f1b3cda 92f663ef 5f8b90a1 4dc5842b 20f58a7c 4521f182 f733e99f>; 
     Tenant = <f3a92b85 dace78cb ae9cba8f 73419929 6932ca12 4ff97ebf 8e2d7689 da9c242b>; 
     Unit = <922b8c16 930cd7b7 05259da0 79ace226 bd379991 955bfc4a 755a72ef 1e5dac4c>; 
    }; 
    NSStoreModelVersionHashesVersion = 3; 
    NSStoreModelVersionIdentifiers =  (
     "" 
    ); 
    NSStoreType = SQLite; 
    NSStoreUUID = "27CE8843-4E80-4F4A-A728-559465D687F8"; 
    "_NSAutoVacuumLevel" = 2; 
}, reason=Can't find model for source store} 

Я попытался вернуться к кодовой базе последней стабильной версии в магазине приложений, но я также работаю в ошибки основных данных «модель не совместима с магазином» или что-то в этом роде.

Это водит меня орехом. Может ли кто-то пролить свет на этот вопрос, пожалуйста?

Редактировать: Мое приложение может создавать резервные копии файлов основных данных в Dropbox. Он поддерживает файлы sqlite и файлы -shm и -wal. Если я удалю свое приложение и загрузим текущую версию в хранилище приложений, восстановите 3 файла из Dropbox, перейдите на любой экран, который использует данные ядра, он сработает.

Есть ли простой способ экспортировать данные из sqlite и импортировать его в основные данные с помощью новой модели?

+1

Ошибка свидетельствует о том, что старая модель данных больше не существует в комплекте приложений. Он все еще там? –

+0

Да, он все еще существует, я даже импортирую старую модель данных из базы кода последней версии в магазин приложений и все еще сталкиваюсь с этой проблемой. – imObjCSwifting

+0

Вы зарегистрировались в скомпилированном комплекте приложений? Я спрашиваю, потому что сообщение об ошибке действительно очень специфично в том, что проблема. По какой-то причине он не может найти старую версию модели. –

ответ

0

Я смог получить правильную старую модель данных, проверив способ фиксации в прошлом и исправить проблему. Спасибо всем