我有一个包含单个Core Data商店的现有应用。它类似于Apple所说的鞋盒应用程序。 已存储了许多记录。我能够轻松添加必要的代码以获得iCloud集成设置。
我在iPod touch和iPad上构建了新的应用程序,两者都运行iOS5。
iPod拥有现有数据。但是数据没有出现在iPad上。 该应用程序已启用iTunes文件共享,因此通过iTunes我删除了两个设备上的sqlite数据库。
现在我尝试进行更改,看看iCloud现在是否会保持同步状态。它没有。
如何在两台设备上获取现有数据,然后让iCloud从那时起保持同步。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:@"ABCD1234.com.yourcompany.appID"];
NSDictionary *options = nil;
if (nil != cloudURL) {
NSString *coreDataCloudContent = [[cloudURL path] stringByAppendingPathComponent:@"data"];
cloudURL = [NSURL fileURLWithPath:coreDataCloudContent];
options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
@"myApp.store", NSPersistentStoreUbiquitousContentNameKey,
cloudURL, NSPersistentStoreUbiquitousContentURLKey,
nil];
}
else {
options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
}
我已将此添加到managedObjectContext中以进行通知:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(mergeChangesFrom_iCloud:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotification object:coordinator];
有数千人使用我的应用程序并输入了大量数据。他们不想再次进入。我想提供启用了iCloud的这个新版本的应用程序,但是直到我能够将数据显示在两者上并保持同步,这是没有意义的。
答案 0 :(得分:0)
良好的睡眠总能帮助你。
注意,我已经通过iTunes文件共享备份了我的主设备中的SQLite数据库。
我启用了iTunes文件共享。我在每台设备上构建应用程序并在XCode中运行。停止每个设备。转到iTunes。通过文件共享我删除每个设备上的sqlite数据库。同步设备。然后我选择一个设备并使用iTunes文件共享将我备份的数据库恢复到它上面。同步设备。
使用恢复的数据库在设备上启动我的应用。然后我在没有db的第二个设备上启动我的应用程序(请记住,上面删除它)。等了一会儿,然后看到数据确实出现了。我想我听到了天使合唱团的微弱声音。