读取documentPicker中的文件时返回nil



我正在读取用户在iOS swift中选择的plist文件。该代码在XCode模拟器(iPhone 13(上按预期工作。但在真正的iPhone 13上,readArrayFromPlist函数返回nil。我找不到原因。

  • 我已经使用iPhone和iCloud中的文档选择器选择了该文件
  • 我读到iOS提供了documentPicker功能内部的权限
  • 我已经打印了URL,它看起来还可以(+它在模拟器上工作(

以下是代码(imagePosArray在真正的iPhone上为零(:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let myURL = urls.first else {
return
}
print("import result : (myURL)")
imagePosArray = readArrayFromPlist(filepath: myURL.path)
}
func readArrayFromPlist(filepath: String) -> [Int]? {
if let arrayFromFile: [Int] = NSArray(contentsOfFile: filepath) as? [Int] {
return arrayFromFile
}
return nil
}

我发现了问题并解决了它。我应该使用didPickDocumentAt而不是didPickDocumentsAt,然后请求访问。这是新代码:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
// Start accessing a security-scoped resource.
guard url.startAccessingSecurityScopedResource() else {
// Handle the failure here.
return
}
print(url.path)
imagePosArray = readArrayFromPlist(filepath: url.path)
// Make sure you release the security-scoped resource when you finish.
defer { url.stopAccessingSecurityScopedResource() }
}

最新更新