在 UIDocumentBrowserVC 中自动选择 UIDocument
Pick UIDocument automatically in UIDocumentBrowserVC
我正在使用 uidocumentbrowservc
并想以编程方式选择 UIDocument
。就我而言,这是因为我想自动加载上次使用的 UIDocument
以在启动时为用户节省一些时间,因为我的应用程序很少更改文档。
我天真的做法是将上次使用的 URL
存储在 UserDefaults
中。然后在我的 uidocumentbrowservc
的 viewDidLoad()
中调用 presentDocument(at: URL)
。但它不起作用。当我调用 URL.checkResourceIsReachable()
时出现错误:
Error Domain=NSCocoaErrorDomain Code=257 "The file “myFile” couldn’t
be opened because you don’t have permission to view it."
文件路径为:
/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/MyApp/myFile.
据我所知,我无法访问它,因为它不在我的沙箱中(它可能在用户保存它的任何地方?)。
有什么建议吗?我相信有更好的方法可以做到这一点。
您不能只保存 URL。您还需要保存 UIDBVC 授予您的沙箱扩展。保存书签而不是 URL 即可。此外,如果用户移动文件(例如在不同设备上的 iCloud Drive 中重命名),书签将继续工作。普通的 URL 不会。
查看 URL 的 bookmarkData(options:includingResourceValuesForKeys:relativeTo:) 选项 .withSecurityScope 和 URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:(然后不要忘记调用 start/stopAccessing结果 URL)
我正在使用 uidocumentbrowservc
并想以编程方式选择 UIDocument
。就我而言,这是因为我想自动加载上次使用的 UIDocument
以在启动时为用户节省一些时间,因为我的应用程序很少更改文档。
我天真的做法是将上次使用的 URL
存储在 UserDefaults
中。然后在我的 uidocumentbrowservc
的 viewDidLoad()
中调用 presentDocument(at: URL)
。但它不起作用。当我调用 URL.checkResourceIsReachable()
时出现错误:
Error Domain=NSCocoaErrorDomain Code=257 "The file “myFile” couldn’t be opened because you don’t have permission to view it."
文件路径为:
/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/MyApp/myFile.
据我所知,我无法访问它,因为它不在我的沙箱中(它可能在用户保存它的任何地方?)。
有什么建议吗?我相信有更好的方法可以做到这一点。
您不能只保存 URL。您还需要保存 UIDBVC 授予您的沙箱扩展。保存书签而不是 URL 即可。此外,如果用户移动文件(例如在不同设备上的 iCloud Drive 中重命名),书签将继续工作。普通的 URL 不会。
查看 URL 的 bookmarkData(options:includingResourceValuesForKeys:relativeTo:) 选项 .withSecurityScope 和 URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:(然后不要忘记调用 start/stopAccessing结果 URL)