iOS11 Swift 4:存储从 DocumentBrowserViewController 检索到的 URL 的访问权限
iOS11 Swift 4: Storing access rights for URLs retrieved from DocumentBrowserViewController
当使用DocumentBrowserViewController
从其他应用程序访问文件时,是否可以存储对这些文件的访问权限?
具体问题
目前,出于概念验证的目的,我将通过 DocumentBrowserViewController
选择的文件的 url 打印到控制台,将 url 硬编码在我的代码中的某处并尝试再次打开该文件。这不起作用,因为:{Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
现在,有没有办法存储访问权限?
在博客中 post 我发现了一些使用:
do {
let data = try sourceURL.bookmarkData(
options: URL.BookmarkCreationOptions.withSecurityScope,
includingResourceValuesForKeys: nil,
relativeTo: nil)
print(data)
} catch {
print(error)
}
但是 withSecurityScope
是 "unavailable"。 (准确地说:'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)!
:)
您需要从 URL 创建书签并存储它。这在本 WWDC session: https://developer.apple.com/videos/play/wwdc2018/216 的 40' 标记处进行了解释,并且也在上周发布的粒子示例代码中。
基本上,上面的代码片段是正确的,除了 withSecurityScope
标志在 iOS 上没有用(这是自动的)。在启动时解析 URL 时,您需要启动访问或使用 UIDocument,它会为您完成此操作。
当使用DocumentBrowserViewController
从其他应用程序访问文件时,是否可以存储对这些文件的访问权限?
具体问题
目前,出于概念验证的目的,我将通过 DocumentBrowserViewController
选择的文件的 url 打印到控制台,将 url 硬编码在我的代码中的某处并尝试再次打开该文件。这不起作用,因为:{Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
现在,有没有办法存储访问权限?
在博客中 post 我发现了一些使用:
do {
let data = try sourceURL.bookmarkData(
options: URL.BookmarkCreationOptions.withSecurityScope,
includingResourceValuesForKeys: nil,
relativeTo: nil)
print(data)
} catch {
print(error)
}
但是 withSecurityScope
是 "unavailable"。 (准确地说:'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)!
:)
您需要从 URL 创建书签并存储它。这在本 WWDC session: https://developer.apple.com/videos/play/wwdc2018/216 的 40' 标记处进行了解释,并且也在上周发布的粒子示例代码中。
基本上,上面的代码片段是正确的,除了 withSecurityScope
标志在 iOS 上没有用(这是自动的)。在启动时解析 URL 时,您需要启动访问或使用 UIDocument,它会为您完成此操作。