Как читать большие файлы с помощью SwiftUI DocumentGroup без создания временной копии?

Я сделал приложение SwiftUI DocumentApp, которое читает большие медиафайлы, но не нуждается в их записи. В моем документе я просто хочу сохранить URL-адрес файла, чтобы я мог загрузить его, например, с помощью AVAudioFile. Я не могу работать, как сделать это без создания временной копии файла, как автор делает здесь , потому что нет никакого способа файла URL из fileWrapper

Я попытался создать канал, используя файл configuration.file.regularFileContents (Data), но до сих пор мне не удалось выполнить чтение из этого канала.

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

1 ответ

Решение

Вы можете получить 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)
        }
    }
}
Другие вопросы по тегам