0

用于从其他应用DocumentBrowserViewController程序访问文件时,是否可以存储对这些文件的访问权限?

具体问题

目前,出于概念证明的目的,我将通过 选择的文件的 url 打印DocumentBrowserViewController到控制台,在我的代码中的某处硬编码该 url,然后尝试再次打开该文件。这不起作用,因为:{Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

现在,有没有办法存储访问权限?

在一篇博客文章中,我发现了一些使用:

do {
    let data = try sourceURL.bookmarkData(
        options: URL.BookmarkCreationOptions.withSecurityScope,
        includingResourceValuesForKeys: nil,
        relativeTo: nil)
    print(data)
} catch {
    print(error)
}

但是withSecurityScope“不可用”。(准确地说'withSecurityScope' has been explicitly marked unavailable here (Foundation.NSURL):)

有没有办法做这种事情?

预先问候和感谢:)

编辑

所以也许我这个问题有点草率,上面的代码只需要调整为:

do {
    let data = try sourceURL.bookmarkData(
        options: URL.BookmarkCreationOptions.minimalBookmark,
        includingResourceValuesForKeys: nil,
        relativeTo: nil)
    print(data)
} catch {
    print(error)
}

然后可以像这样使用这些数据:

let url = try URL.init(resolvingBookmarkData: data, bookmarkDataIsStale: &stale)!

:)

4

1 回答 1

0

您需要从 URL 创建一个书签并存储它。这在本次 WWDC 会议的 40' 标记处进行了解释:https ://developer.apple.com/videos/play/wwdc2018/216 ,并且也在上周发布的 Particles 示例代码中。

本质上,上面的代码片段是正确的,除了withSecurityScope标志在 iOS 上是无用的(这是自动的)。在启动时解析 URL 时,您需要 startAccessing 或使用 UIDocument,它会为您执行此操作。

于 2018-06-10T11:46:21.570 回答