如何使用 SwiftUI DocumentGroup 读取大文件而不制作临时副本?

oli*_*kin 2 swiftui documentgroup

我制作了一个 SwiftUI DocumentApp,它可以读取大型媒体文件,但不需要写入它们。在我的文档中,我只想存储文件的 URL,以便我可以使用例如 AVAudioFile 加载它。我无法弄清楚如何在不创建文件临时副本的情况下执行此操作,正如作者在此处所做的那样,因为无法从 fileWrapper 访问文件 URL

我尝试使用configuration.file.regularFileContents(数据)创建一个管道,但到目前为止我没有成功从该管道读取数据。

  init(configuration: ReadConfiguration) throws {
    let tempURL = makeTemporaryFileURL()
    FileManager.default.createFile(atPath: tempURL.path, contents: configuration.file.regularFileContents, attributes: nil)
    audioFileUrl = tempURL
  }
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 6

您可以fileURL通过文档配置来获取,例如

@main
struct MyApp: App {
    var body: some Scene {
        DocumentGroup(viewing: MyDocument.self) { fileConfig in
            // here fileConfig has `fileURL` of opened document, so 
            MyViewer(content: fileConfig.document, url: fileConfig.fileURL)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)