1

我正在尝试将自定义文件从我的一个应用程序导入另一个应用程序(我们称它们为 App_A 和 App_B)。如果我直接从 App_A 导出文件并在共享表中选择 App_B 一切正常。

我的问题是文件保存在 iCloud Drive 中,因此用户可以通过系统的文件应用程序访问它。当我尝试从 Files 应用程序或 App_B 中通过UIDocumentPickerViewController.

在这两种情况下,我都运行以下代码(内部UIDocumentPickerDelegateAppDelegate):

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 上执行此操作,但结果没有改变。

你对这个奇怪的错误有什么想法吗?我想如果用户选择一个文件和一个应用程序来打开它,就会授予权限,但可能我错过了一些东西。你能帮忙吗?

4

0 回答 0