iCloud& Shoebox应用程序:如何以原子方式同步文件包?

时间:2014-01-07 08:09:04

标签: ios macos cocoa icloud nsfilecoordinator

我有一个“Shoebox”Mac应用程序,基于UIDocument的iOS版本。

我正在尝试找出通过iCloud在Mac和iOS之间同步数据的最佳策略。

我不能在Mac应用程序中采用NSDocument(这是一个鞋盒应用程序,没有类似于iTunes中专辑的单独文档的概念)。

我对Mac应用的计划如下:

  • 将每个项目作为文件包存储在“数据”目录中
  • 使用文件包装器编写包
  • 使用文件协调来同步读/写操作(在文件包的“root”文件夹上同步)

对于iOS应用:

  • 将Mac app在数据目录中创建的文件包加载为UIDocument s
  • 依靠UIDocument进行更改通知/文件协调
  • 我不会使用Documents文件夹,因为我不希望用户在“设置”应用中查看文档

我的问题:

  • 如何确保来自Mac的文件包以与iOS一致的方式同步? (即,对包中的多个文件的更改将作为一个更改原子地处理)
  • 在目录上设置“文件包”位是否足够(我实际上通过导出UTI来实现这一点)?
  • 有没有办法实际模拟/测试这个?

1 个答案:

答案 0 :(得分:2)

你在这里寻找一个世界。在机器之间同步文件包没有灵丹妙药 - 有太多未解决的问题,iCloud同步这些问题。如果包中的一半数据文件写出然后用户关闭了她的计算机而其余的都没有写,会发生什么?如果正确地从网络中读取主索引文件但是在它引用的任何数据文件被加载之前网络失败了怎么办?

据我所知,iCloud无法解决这些问题。

但是,即便如此,即使使用鞋盒应用程序,我也会(并且确实)使用NSDocument。要让它做你想做的事情并不是很多工作,你可以免费获得这么多东西。比如,只需从主菜单中删除“打开”和“保存”菜单项,并告诉NSDocumentController在应用程序启动时打开您的数据文件。这就是我们的工作。