我正在尝试使用由Core Data管理的数据库,并在我的iPhone应用程序中与iCloud同步。
我使用了WWDC 2012中的示例代码,并设法让它几乎正常运行。
另外,我的数据库非常简单:只有一种对象,没有任何关系。
两个设备可以通过iCloud进行通信,但是,这个小方案失败了:
是的,应用程序崩溃了。我的数据库中只有一个对象,Core Data似乎无法解决一点点小冲突。
以下是我如何创建持久存储以及使用哪些选项:
NSDictionary *options = @{NSPersistentStoreUbiquitousContentNameKey : contentName,
NSPersistentStoreUbiquitousContentURLKey : iCloudLogsPath};
self.iCloudStore = [self.persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:iCloudData
options:options
error:&error];
这是我用来在后台创建NSManagedObjectContext的代码:
- (NSManagedObjectContext*) currentThreadContext {
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[moc setPersistentStoreCoordinator:self.persistentStoreCoordinator];
[moc setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];
return moc;
}
我确实添加了一个断点来捕获任何异常,这是我得到的:
objc_exception_throw:
[NSPersistentStoreCoordinator executeRequest:withContext:error:]:
[NSManagedObjectContext save:]:
[_PFUbiquityRecordImportOperation main]:
[__NSOperationInternal start]:
[_PFUbiquityRecordsImporter scheduleTransactionLogOperations:synchronous:error:]:
[_PFUbiquityRecordsImporter scanOperationFinished:withDiscoveredLogLocation:error:]:
[PFUbiquityImportScanOperation main]:
[__NSOperationInternal start]:
[_PFUbiquityRecordsImporter scheduleUbiquityRootScan:withLocalPeerLogs:error:]:
[_PFUbiquityRecordsImporter rollResponseOperation:successfullyAdoptedBaseline:]:
[PFUbiquityBaselineRollResponseOperation main]:
[__NSOperationInternal start]:
任何帮助都将受到高度赞赏!