Как читать большие файлы с помощью 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)
}
}
}