2

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

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

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

我对 Mac 应用程序的计划是这样的:

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

对于 iOS 应用程序:

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

我的问题:

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

1 回答 1

2

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

据我所知,iCloud 没有做任何事情来处理这些问题。

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

于 2014-01-07T11:55:08.307 回答