macOS 命令行代码在 Swift 中获取数据的现代方式,并带有进度通知

问题描述 投票:0回答:1

老程序员,但苹果生态系统的新手。我想使用最现代的 API 和 Swift 技术通过 https 获取一些数据并获取进度报告。

我能找到的大多数教程和示例都使用我认为现在已经过时的技术,例如

RunLoop
或信号量。或者它们用于已经有委托的 GUI 代码。

我能够走到这一步,使用

async
/
await
从具有
@main
static
函数注释的结构内部获取数据。
它使用 

async

所以我不必提供代表。

我不确定是否有办法为此添加进度报告。或者更有可能我需要一名代表。在这种情况下,我一直无法找到如何为这个最小的用例创建一个简单的委托。或者也许还有我还没有发现的不同方式?

URLSession.shared.data(for:


swift macos https command-line progress
1个回答
0
投票
import Foundation func fetchData() async throws -> Data { // this is a 1 megabyte text file, big enough for updates let url = URL(string: "https://gist.github.com/khaykov/a6105154becce4c0530da38e723c2330/raw/41ab415ac41c93a198f7da5b47d604956157c5c3/gistfile1.txt")! var request = URLRequest(url: url) let (data, _) = try await URLSession.shared.data(for: request) return data } @main struct Main { static func main() async throws { do { let data = try await fetchData() let str = String(data: data, encoding: .utf8) dump(str) } catch { print("** \(error.localizedDescription)") } } }

环境中,您需要

async/await
才能访问数据任务并能够观察任务的
Continuation
属性。

progress

替换为

fetchData

© www.soinside.com 2019 - 2024. All rights reserved.