如何在不制作临时副本的情况下使用SwiftUI DocumentGroup读取大文件



我制作了一个SwiftUI DocumentApp,它可以读取大型媒体文件,但不需要编写它们。在我的文档中,我只想存储文件的URL,这样我就可以使用例如AVAudioFile加载它。如果不创建文件的临时副本,我就无法解决如何做到这一点,就像作者在这里所做的那样,因为无法从fileWrapper 访问文件URL

我曾尝试使用configuration.file.regular FileContents(Data(创建一个管道,但到目前为止,我没有成功读取该管道。

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

您可以通过文档配置获得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)
}
}
}

相关内容

最新更新