如何在 macOS 上的 SwiftUI 中设置 .fileImporter 视图修改器的目录

问题描述 投票:0回答:1

我试图指示 .fileImporter 在特定目录中启动(该应用程序具有用户选择的文件读/写文件访问权限),已经创建了展示该行为的简单游乐场:

import SwiftUI
import PlaygroundSupport

struct FileOpenExample : View {

  @State private var fileDialogPresented: Bool = false
  private var initialDirectory: URL = URL(fileURLWithPath: "/Users/myuser/Library/Application%20Support/com.mydomain.myapp")
  var body: some View {
    Button {
      fileDialogPresented = true
    } label: {
      Text("Select File")
    }
    .fileDialogDefaultDirectory(initialDirectory)
    .fileImporter(isPresented: $fileDialogPresented, allowedContentTypes: [.utf8PlainText]) { result in
    }
  }
}

let sampleView = FileOpenExample()

PlaygroundPage.current.setLiveView(sampleView)

它在 Playground 或我的应用程序中的行为类似,基本上打开到应用程序的运行位置,而不是我指定的 URL(我指定的 URL 处的目录确实存在)

我尝试将

.fileDialogDefaultDirectory
放在
.fileImporter
的上方和下方,但无济于事。 Apple 文档是正确/完整的,但没有提供太多指导或如何正确使用它的示例。 建议?

macos swiftui
1个回答
0
投票

尝试在

.fileDialogDefaultDirectory
之后移动
.fileImporter
,例如:

    .fileImporter(isPresented: $fileDialogPresented, allowedContentTypes: [.utf8PlainText]) { result in
        print("\n---> result: \(result)\n")
    }
    .fileDialogDefaultDirectory(initialDirectory) // <--- here
© www.soinside.com 2019 - 2024. All rights reserved.