我正在使用一个uidocumentbrowservc,并希望以编程方式选择一个UIDocument。在我的例子中,这是因为我想自动加载上一次使用的UIDocument,以节省用户启动时的时间,因为我的应用程序很少更改文档。
我的天真方法是将上一次使用的URL存储在UserDefaults中。然后在我的viewDidLoad() of my uidocumentbrowservc中,我称之为presentDocument(at: URL)。但不起作用。当我调用URL.checkResourceIsReachable()时,我得到了错误:
错误Domain=NSCocoaErrorDomain Code=257“文件”“myFile”无法打开,因为您没有查看它的权限。
文件路径是:
/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/MyApp/myFile.据我所知,我无法访问它,因为它不在我的沙箱中(它可能在用户保存它的任何地方?)。
有什么建议吗?我相信有更好的方法来做到这一点。
发布于 2018-02-13 06:15:54
您不能只保存URL。您还需要保存UIDBVC授予您的沙箱扩展。保存书签而不是URL就可以做到这一点。此外,如果用户移动文件(例如,在不同设备上的iCloud驱动器内重命名),书签将继续工作。普通的URL不会。
查看URL的bookmarkData(options:includingResourceValuesForKeys:relativeTo:)和选项.withSecurityScope和URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:(然后不要忘记对结果的URL调用开始/停止访问)
https://stackoverflow.com/questions/48750600
复制相似问题