【发布时间】:2021-07-29 23:31:17
【问题描述】:
我目前正在使用 Flutter 将有效文件路径的 String 传递给 Swift,以便访问 安全范围资源 (这部分可能不相关)
所以我有一个接受String 的函数,如下所示:
public func requestAccessToFile(filePath: String) -> Bool {
let fileUrl = URL(fileURLWithPath: filePath)
return fileUrl.startAccessingSecurityScopedResource()
}
我知道startAccessingSecurityScopedResource 并不总是返回true,但在这种情况下,它应该返回,因为如果我尝试访问文件而不返回true,则会出现权限错误。
更多上下文:如果我从文件选择器获取 URL 后立即调用 startAccessingSecurityScopedResource,它确实会成功,但如果我使用函数执行它会失败(请注意该函数被调用带有String 并且我正在传递没有file:// 协议的路径。例如"/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Documents/afile.pdf"
所以我的猜测是文件选择器创建的 URL 与我使用字符串路径创建的 URL 有所不同。但不确定。
提前感谢您的帮助。
【问题讨论】:
-
啊,一个额外的评论,它确实在模拟器上工作,它只在物理设备上失败。