UIManagedDocument是否为我处理行级冲突,或者我是否需要处理这些冲突,他的回答是它确实处理行级冲突。也许我误解了他,但我看不到这一点。
因此,我将问几个关键问题,希望在这里得到一些澄清,这也是UIManagedDocument
如果我有一个具有名字和姓氏字段的表Author,如果: A)我与author有一行:'Jon Do‘-它已经同步到两个设备,会发生什么?然后,我将一个设备上的名字从“Jon”编辑为“John”,将另一个设备上的姓氏从“Do”编辑为“Doe”。iCloud和UIManagedDocument将如何处理此问题?为了处理冲突,我是否会收到某种需要响应的通知?我尝试了以下代码,但从未收到通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_ondocumentStateChangedNotification:) name:UIDocumentStateChangedNotification object:self.openedDoc];B)如果我在两个设备上添加一个不同的作者,那么现在有两行要合并,UIManagedDocument会帮我处理吗?还是我需要自己做一些事情?如果我需要自己做一些事情,我需要做什么?我试着注册了,但似乎也没有成功。我应该在哪种上下文中签约?我试过这个:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_onPersistentStoreDidImportUbiquitousContentChanges:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotificationobject:self.openedCaddy.managedObjectContext.parentContext];另外,我需要为UIManagedDocument自己处理NSManagedObjectContextDidSaveNotification吗?还是由UIManagedDocument为我处理?
非常感谢大家的帮助,我在这里真的很努力。我在iOS 5发布时采用了iCloud和UIManagedDocument,并摸索出了自己的方式,尽管当时缺乏文档,但还是设法推出了一个产品,但现在我希望iCloud能真正工作,而不是简单地用赢家通吃的方法来实现文档同步。
发布于 2013-09-06 06:42:36
我想通了。UIManagedDocument确实处理行级冲突。
我没有看到任何名称的原因:NSPersistentStoreDidImportUbiquitousContentChangesNotificationobject通知是因为我没有正确设置moc的持久存储选项。为了让核心数据开始同步,你必须至少设置以下选项:NSPersistentStoreUbiquitousContentNameKey & NSPersistentStoreUbiquitousContentURLKey。
当我两年前第一次开始使用iCloud时,我总是认为对setUbiquitous:itemAtURL:destinationURL:error:的调用会帮我做到这一点,并且是等价的,但事实并非如此。setUbiquitous:itemAtURL:destinationURL:error:只是告诉iCloud同步这个网址上的文件,它不会对核心数据做任何事情--想想dropbox。要使UIManagedDocument的核心数据部分同步,需要设置这两个选项。
我已经开始了一个github存储库,它澄清了其中的一些内容,并使启动和运行UIManagedDocument变得更加容易。http://github.com/dtrotzjr/APManagedDocument
希望这对其他人有所帮助。我觉得自己很愚蠢,没能很快意识到这一点,但当我在2年前第一次为iOS 5实现iCloud同步时,文档很少,iCloud也不能很好地工作,所以我认为我的行为是正常的。
https://stackoverflow.com/questions/18436682
复制相似问题