Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS核心数据轻量级迁移_Iphone_Ios_Core Data_Core Data Migration - Fatal编程技术网

Iphone iOS核心数据轻量级迁移

Iphone iOS核心数据轻量级迁移,iphone,ios,core-data,core-data-migration,Iphone,Ios,Core Data,Core Data Migration,我遇到了核心数据轻量级迁移的问题。 模型的第一个版本的应用程序已提交到AppStore。 然后是版本2的数据模型(未提交)。 最后,在做了一些更改之后,我添加了模型的版本3,并将其提交到AppStore 随着迁移的逐步完成(v1-v2-v3),在测试设备上一切都运行良好 但它不适用于从AppStore更新应用程序的用户,例如它正试图从版本1迁移到版本3(跳过版本2) 我怎样才能解决这个问题? 谢谢。这是一个暴力解决方案,但删除商店是解决问题的一个选项: // Setup CoreData wit

我遇到了核心数据轻量级迁移的问题。 模型的第一个版本的应用程序已提交到AppStore。 然后是版本2的数据模型(未提交)。 最后,在做了一些更改之后,我添加了模型的版本3,并将其提交到AppStore

随着迁移的逐步完成(v1-v2-v3),在测试设备上一切都运行良好

但它不适用于从AppStore更新应用程序的用户,例如它正试图从版本1迁移到版本3(跳过版本2)

我怎样才能解决这个问题?
谢谢。

这是一个暴力解决方案,但删除商店是解决问题的一个选项:

// Setup CoreData with MagicalRecord && remove CoreData store
// The flag is used to perform the delete just once
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"CORE_DATA_FLAG01"]) {
    NSURL *storeURL =[NSPersistentStore MR_urlForStoreName:@"YourStore.sqlite"];
    LOG(@"%@", storeURL);
    NSFileManager *fm = [[NSFileManager alloc] init];
    NSError *error = nil;
    [fm removeItemAtURL:storeURL error:&error];
    if (error) {
        LOG(@"error %@", error);
    } else {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"CORE_DATA_FLAG01"];
    }
}

我用它与CoreData交互。在本例中,我使用该函数获取存储。

对于轻量级迁移,如果V1->V2工作,V2->V3工作,那么直接从V1->V3开始应该不会有问题,除非你把事情弄糟了。:)

启动V1版本,然后切换到V3,逐步解决并调试问题

NSDictionary *options = @{
                          NSMigratePersistentStoresAutomaticallyOption: @YES,
                          NSInferMappingModelAutomaticallyOption: @YES
                         };
NSError *error;
NSPersistentStore *persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error];
if (!persistentStore) {
    NSLog(@"migration failed: %@", error);
}

您是否使用subversion或git之类的系统控制版本?仅供参考,
LOG
是在调试模式下执行
NSLog
的宏。