【问题标题】:how to deal with (A Document being saved by MyApp) files?如何处理(MyApp正在保存的文档)文件?
【发布时间】:2013-01-14 13:01:07
【问题描述】:

我的应用程序使用 iCloud。我的应用程序将其所有数据存储在 1 个文档中,并且不应超过 1 个文档。但是,有时我的 NSMetadataQuery 会返回 2 个文档:

0: Documents/(A Document being saved bt MyApp)/MyDoc.ext
1:文档/MyDoc.ext

这主要发生在用户在 iOS 设备重启后不久打开应用程序时。

在检查这 2 个文档时,文档 0 是具有最新更新的文档,因此这是我们想要的。

这个“正在保存的文档”最终出现并成为最新的原因是什么,我该如何正确处理,所以 Documents/MyDoc.ext 将是具有最新内容的那个。

谢谢, -r

【问题讨论】:

  • 当应用程序在保存时崩溃时,我通常会看到“( 保存的文档)”。原子写入涉及在替换现有文档之前写入单独的文件——这似乎就是这个目录所代表的内容。出于这个原因,我怀疑无法保证这个“正在保存”文档中的数据是完整无缺的,但我也有兴趣看看是否有人有任何挽救它们的经验。
  • 原子写入意味着无法挽救

标签: ios document icloud save icloud-api


【解决方案1】:

我认为 Stuart 的评论提供了您将得到的大部分答案。仅文档被称为“(由 保存的文档)”而不是“(由 保存的文档)这一事实强烈表明他是对的。
我想现在由您来弄清楚为什么保存文档会崩溃或永远不会完成或被终止或其他原因。如果您的应用程序在进入后台时保存文档的时间过长、崩溃或其他情况,则可能是超时 - 我认为您没有为任何人提供足够的信息来给您一个真正准确的答案。

【讨论】:

    【解决方案2】:

    Documents中名为“A Document Being Saved by AppName”的文件夹是一个临时文件夹,用于存储二进制大对象(BLOB)。

    通常,如果您的应用程序保存成功,则应清空该文件夹。但是,如果它在保存过程中崩溃,该文件夹将存储一些数据以供您处理。 基本上,我总是在启动时删除目录。因此,如果 BLOB 没有移动到隐藏的 BLOB 目录中,它将不在数据库中。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多