我正在尝试将自定义文件从我的一个应用程序导入另一个应用程序(我们称它们为 App_A 和 App_B)。如果我直接从 App_A 导出文件并在共享表中选择 App_B 一切正常。
我的问题是文件保存在 iCloud Drive 中,因此用户可以通过系统的文件应用程序访问它。当我尝试从 Files 应用程序或 App_B 中通过UIDocumentPickerViewController
.
在这两种情况下,我都运行以下代码(内部UIDocumentPickerDelegate
或AppDelegate
):
let access = url.startAccessingSecurityScopedResource()
var error: NSError? = nil
NSFileCoordinator().coordinate(readingItemAt: url, error: &error) { (coorURL) in
do{
let data = try Data(contentsOf: coorURL)
}catch{
print("manage error: \(error.localizedDescription)")
}
if access{
url.stopAccessingSecurityScopedResource()
}
}
我得到的错误总是一样的:
Error Domain=NSCocoaErrorDomain Code=257 ... NSUnderlyingError=0x2803e07b0 {Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied"}}
并且url.startAccessingSecurityScopedResource()
总是返回false
。
我在设备上的 Xcode 11.4.1、Swift 5、iOS 13.3.1 和模拟器上的 13.4.1 上执行此操作,但结果没有改变。
你对这个奇怪的错误有什么想法吗?我想如果用户选择一个文件和一个应用程序来打开它,就会授予权限,但可能我错过了一些东西。你能帮忙吗?