这是我的情景:
我的应用程序使用核心数据,我正在添加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文档上找不到它。
答案 0 :(得分:2)
migratePersistentStore
的重点是您正在转移到不同的商店。您无法迁移到同一个地方。
由于您要迁移到iCloud,因此请为启用iCloud的商店使用其他名称和/或路径。例如,将iCloud命名为Database-iCloud.sqlite
。然后从现有商店迁移到那个商店。