将Core Data App迁移到iCloud

时间:2014-04-03 16:10:42

标签: ios objective-c core-data ios7 icloud

这是我的情景:

我的应用程序使用核心数据,我正在添加iCloud支持,但我在尝试将用户数据迁移到iCloud时遇到问题。

这是我尝试过的:

- 使用addPersistentStoreWithType

添加了我当前的本地数据库
    NSError* error;

    NSURL* oldStoreURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:NULL];
    oldStoreURL =[oldStoreURL URLByAppendingPathComponent:@"Database.sqlite"];

    // add local store (local version)

   NSPersistentStore  *store =  [self.managedObjectContext.persistentStoreCoordinator  addPersistentStoreWithType:NSSQLiteStoreType
                                                                        configuration:nil
                                                                                  URL:oldStoreURL
                                                                              options:options
                                                                                error:&error];

- 使用migratePersistentStore方法进行迁移(可能我在这里遗漏了一些东西):

    NSURL* storeURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:NULL];
    storeURL =  [storeURL URLByAppendingPathComponent:@"Database.sqlite"];

[self.managedObjectContext.persistentStoreCoordinator migratePersistentStore:store toURL:storeURL options:iCloudOptions withType:NSSQLiteStoreType error:&error];

我收到Cocoa错误134080,无法再添加两次相同的商店。

有人可以解释一下这个migratePersistentStore方法是如何工作的,以及我需要为每个参数传递什么?我在Apple文档上找不到它。

1 个答案:

答案 0 :(得分:2)

migratePersistentStore的重点是您正在转移到不同的商店。您无法迁移到同一个地方。

由于您要迁移到iCloud,因此请为启用iCloud的商店使用其他名称和/或路径。例如,将iCloud命名为Database-iCloud.sqlite。然后从现有商店迁移到那个商店。