2

我正在使用一个uidocumentbrowservc并想以UIDocument编程方式选择一个。在我的情况下,这是因为我想在UIDocument启动时自动加载上次用于节省用户的时间,因为我的应用程序很少更改文档。

我天真的方法是将上次使用的存储URLUserDefaults. 然后在viewDidLoad()我的 uidocumentbrowservc我打电话presentDocument(at: URL)。但它不起作用。当我打电话时,URL.checkResourceIsReachable()我得到了错误:

错误域 = NSCocoaErrorDomain 代码 = 257 “文件“myFile”无法打开,因为您无权查看它。”

文件路径为:

/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/MyApp/myFile.

据我了解,我无权访问它,因为它不在我的沙箱中(它可能在用户保存它的任何地方?)。

有什么建议么?我相信存在更好的方法来做到这一点。

4

1 回答 1

1

您不能只保存 URL。您还需要保存 UIDBVC 授予您的沙盒扩展。保存书签而不是 URL 可以做到这一点。此外,如果用户移动文件(例如在不同设备上的 iCloud Drive 中重命名),书签将继续工作。纯 URL 不会。

查看带有选项 .withSecurityScope 和 URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error: 的 URL 的 bookmarkData(options:包括ResourceValuesForKeys:relativeTo:) (然后不要忘记在结果 URL 上调用 start/stopAccessing)

于 2018-02-13T06:15:54.357 回答