无法在实际设备上使用 .fileImporter 打开文件

The*_*per 3 swiftui

当我测试 iOS 14 beta 时,此功能在部署在真实设备上时可以工作,但现在在生产中它只能在模拟器上工作。iOS 14 有什么变化吗?我收到以下错误:

\n

FilePickerTest[15486:5885508] [AXRuntimeCommon] 未知客户端:FilePickerTest

\n

文件 \xe2\x80\x9c16010282771_20190702_23_38.csv\xe2\x80\x9d 无法打开\xe2\x80\x99,因为您\xe2\x80\x99没有查看它的权限。

\n

我是否需要添加一项设置才能授予我的应用程序访问该文件的权限?

\n
import SwiftUI\n\nstruct ContentView: View {\n    @State private var openFile = false\n    @StateObject var doc = ViewModel()\n    \n    var body: some View {\n        VStack {\n            Text("Tap to pick a csv file")\n                .padding()\n                .onTapGesture(perform: {\n                    openFile.toggle()\n                })\n        }\n        .fileImporter(isPresented: $openFile, allowedContentTypes: [.commaSeparatedText]) { (res) in\n            do {\n                let fileUrl = try res.get()\n                print(fileUrl)\n                doc.viewFile(fileUrl: fileUrl)\n            } catch {\n                print("Error reading file")\n                print(error.localizedDescription)\n            }\n        }\n        \n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\nimport SwiftUI\n\nclass ViewModel: ObservableObject {\n    \n    var readString = ""\n    func viewFile(fileUrl: URL) {\n        do {\n            readString = try String(contentsOf: fileUrl)\n        } catch {\n            print("Error reading file")\n            print(error.localizedDescription)\n        }\n        \n        print("File contents: \\(readString)")\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

小智 7

在 doc.viewFile(fileUrl: fileUrl) 之前添加 fileUrl.startAccessingSecurityScopedResource()