M.J*_*J.K 2 macos foundation wwdc swift swift5.5
在WWDC2021 28:00的“Platforms State of the Union”视频中提到
[Apple] 甚至增加了对文件的异步逐行迭代的支持
在 macOS 12/iOS 15 和 Swift 5.5 的基础中。
那个新 API 是什么,我现在如何通过文件异步逐行迭代?
他们添加的主要内容是AsyncSequence. AsyncSequence就像Sequence,但它的Iterator.next方法是async throws。
具体来说,您可以使用URLSession.AsyncBytes.lines获取AsyncSequence文件中的某一行。
假设你在一个async throws方法中,你可以这样做:
let (bytes, response) = try await URLSession.shared.bytes(from: URL(string: "file://...")!)
for await line in bytes.lines {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
请注意,还有FileHandle.AsyncBytes.lines,但在文档中它说:
而不是创建一个
FileHandle读取文件异步,你可以改用file://网址联合在异步的await方法URLSession。这些包括传递异步字节序列以及立即返回文件的全部内容的bytes(for:delegate:)和bytes(from:delegate:)方法。data(for:delegate:)data(from:delegate:)
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |