【发布时间】:2012-04-11 15:08:29
【问题描述】:
我有一个可用的 iCloud 实现。现在我想通过添加一些合并功能来改进冲突处理。我一直在尝试提出一种一致的方法来强制冲突以进行测试,但到目前为止我还没有运气,当我期望冲突发生时,冲突并不会持续发生。这可能表明我做错了什么,或者我只是误解了 iCloud 的工作原理(我的意思是另一件事)。
我正在使用 UIDocument,是的,我正在收听 UIDocumentStateChangedNotification。事实上,我确实偶尔会收到一些冲突通知。另外,我在 iCloud 中只有一个文件。
有两台设备使用相同的 iCloud 帐户,以下是我期望总是会导致冲突的事件流:
- 在两台设备上打开文件(两台设备现在都可以正确看到相同的内容)。 注意:这是唯一一次调用 openWithCompletionHandler ,之后就再也没有调用过。
- 在设备 A 上进行一些更改并调用 saveToURL。
- 等待一段时间,让更改传播。
- 在设备 B 上进行一些其他更改并调用 saveToURL。
- 等待一段时间,让更改传播。
- 预期:应用应该从 iCloud 收到冲突通知。 观察到:冲突确实偶尔发生,但大多数情况下发生的只是 UIDocument 设置其 UIDocumentStateEditingDisabled 标志,然后在半秒左右后清除(我猜编辑是在 iCloud 守护进程从其他设备提取版本并将其保存在本地普遍存在的目录中时被禁用。
很像 SVN 之类的版本控制系统,我预计来自设备 B 的版本会导致冲突,因为需要“更新”才能让设备 A 上传版本。
我在刚才描述的场景中期待冲突是错误的吗?为什么?有没有其他方法可以持续地强迫冲突?
谢谢!
【问题讨论】: