微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以异步方式访问 iCloud 文档文件

如何解决如何以异步方式访问 iCloud 文档文件

我正在尝试在我现有的应用程序中添加对 iCloud 文档的支持,但我很难做到这一点。

Apple 似乎更喜欢您为此使用 UIDocument 类。但是 UIDocument 不直接访问文件系统中的文件,它希望在 NSData 对象中维护文件内容的副本。在我的情况下,这根本不可行。我当前所有的代码和我使用的 3rd 方库的一半,直接使用文件系统上的文件,而不是 NSData。重写所有这些代码根本不可行。

当不使用 UIDocument 类时,Apple 希望您使用 NSFileCoordinator 来协调对文件内容的访问。我试图用我的代码来做到这一点,但 NSFileCoordinator 上的方法似乎期望所有的读取和写入都将在一个同步序列中完成。 NSFileCoordinator 的所有方法都将一个块作为参数,并期望在该块内执行所有读/写操作。据我所知,当块返回时,您不能再进行任何文件访问。

这对我来说也是不可行的。我的一些代码和第 3 方库在后台线程上以异步方式进行读/写。我可以确定代码需要访问文件内容的时间段的开始和结束,所以如果有一个单独的 requireAccess 方法,并且在 relinquishAccess 上有单独的 NSFileCoordinator,那将使我能够实现目标。但似乎并非如此。

我不清楚 NSFilePresenter 在这方面的作用是什么。一些文档,尤其是 NSFilePresenter 中的 relinquishPresentedItemToReader() 文档似乎表明您实际上可以单独获取/放弃访问权限:

如果您想在读者完成任务时收到通知, 将您自己的块传递给读取器并使用该块重新获取 供您自己使用的文件或网址。

但它没有在任何地方解释如何“重新获取文件

所以具体问题:我需要以异步方式执行以下步骤:

  1. 获得对该文件的访问权,并获得该文件在本地文件系统上的 file: URL
  2. 执行多个异步操作, 对普通文件系统的文件进行读/写操作 对该 file: 网址的操作
  3. 放弃对文件的访问

有人知道是否可以这样做,以及如何进行第 1 步和第 3 步吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。