我正在使用一个uidocumentbrowservc
并想选择一个UIDocument
以编程方式。就我而言,这是因为我想自动加载上次使用的UIDocument
在启动时节省用户一些时间,因为我的应用程序很少更改文档。
我天真的方法是存储上次使用的URL
in UserDefaults
。然后在viewDidLoad()
of my uidocumentbrowservc
I call presentDocument(at: URL)
。但这不起作用。当我打电话时URL.checkResourceIsReachable()
我收到错误:
错误域=NSCocoaErrorDomain代码=257“文件“myFile”无法
被打开,因为您没有查看权限。”
文件路径是:
/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/MyApp/myFile.
据我了解,我无权访问它,因为它不在我的沙箱中(它可能在用户保存它的任何地方?)。
有什么建议么?我确信存在更好的方法来做到这一点。
您不能只保存 URL。您还需要保存 UIDBVC 授予您的沙箱扩展。保存书签而不是 URL 即可实现此目的。此外,如果用户移动文件(例如在不同设备上的 iCloud Drive 内重命名),书签将继续工作。普通 URL 则不会。
使用选项 .withSecurityScope 和 URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error: 查看 URL 的 bookmarkData(options:includeResourceValuesForKeys:relativeTo:) (然后不要忘记在结果 URL 上调用 start/stopAccessing)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)