核心数据:通过迁移更新配置

时间:2014-08-03 10:04:10

标签: ios core-data migration

目前,我有两种不同的商店配置:

A:客户端设备的本地

B:客户端设备本地并与iCloud同步

在我的应用程序的下一个版本中,我想将配置A中的一些实体合并到配置B中。

我无法找到任何有用的信息来执行此操作而不会丢失用户数据。 我会尝试给你一些更多细节:

让我们说这些是我配置的模式:

Configuration A entities:
- Entity_1
- Entity_2
- Entity_3

Configuration B entities:
- Entity_4 

我想最终得到这个单一的配置:

Configuration A entities:
- Entity_1
- Entity_2
- Entity_3
- Entity_4    

我用来初始化商店的当前代码是下一个:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }

// Define the stores URLS
    NSURL *store_A_URL = [[self databaseFolder] URLByAppendingPathComponent:@"StoreA.sqlite"];

    NSURL *store_B_URL = [[self databaseFolder] URLByAppendingPathComponent:@"StoreB.sqlite"];

    NSError *error = nil;

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

// iCloud sync store config
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                                   configuration:@"Config_A"
                                                             URL:store_A_URL
                                                         options:@{NSPersistentStoreUbiquitousContentNameKey:@"Store"}
                                                           error:&error]) {

    /// Error management

    }    

// Local only store config
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                                   configuration:@"Config_B"
                                                             URL:store_B_URL
                                                         options:0
                                                           error:&error]) {

    /// Error management

    }

    return _persistentStoreCoordinator;
}

我的问题是:"如何执行store_B实体的迁移以包含到store_A中,从而自动与iCloud同步?"

编辑:

我想知道是否将NSPersistentStoreUbiquitousContentNameKey选项添加到" Store B"足以让它在iCloud上同步...留下2种不同的配置...... 你觉得怎么样?

0 个答案:

没有答案