当Core Data尝试在iOS上与iCloud同步时,会发生奇怪的崩溃

时间:2013-01-30 20:06:37

标签: iphone ios core-data icloud

我正在尝试使用由Core Data管理的数据库,并在我的iPhone应用程序中与iCloud同步。

我使用了WWDC 2012中的示例代码,并设法让它几乎正常运行。

另外,我的数据库非常简单:只有一种对象,没有任何关系。

两个设备可以通过iCloud进行通信,但是,这个小方案失败了:

  • 在设备A上创建一个对象
  • 等待对象出现在设备B上
  • 修改设备A上的对象
  • 修改设备B上的对象
  • 当设备B知道更新时,它会尝试合并更改并且应用程序崩溃。

是的,应用程序崩溃了。我的数据库中只有一个对象,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]:

任何帮助都将受到高度赞赏!

0 个答案:

没有答案