【发布时间】:2021-12-04 20:27:12
【问题描述】:
我正在尝试使用 Swift 5.5 中的 async / await 进行异步网络调用,但由于某种原因,它在我的 Swift 包中无法按预期工作。
let (data, response) = await URLSession.shared.data(for: request)
上面的代码行在一个快速的操场上工作(这里的请求是一个 URLRequest)但它无法在我的 Swift 包中工作(使用 swift 工具版本 5.5)
最初的错误是:Type of expression is ambiguous without more context,但我意识到它与元组分配有关,所以我将语句更改为:
let data = await URLSession.shared.data(for: request)
它给了我错误:Value of type 'URLSession' has no member 'data'
此外,Xcode 的代码完成不会列出 .data(for:) 而在 Swift 包而不是在 Playground 中工作时。查看下面的屏幕截图以获得更好的理解。
【问题讨论】:
-
您忘记了
await关键字,如果您还没有在异步上下文中调用,请不要忘记在异步上下文中执行该调用。let (data, response) = await URLSession.shared.data -
@AndyIbanez 我忘记在帖子中添加
await关键字,但是当我将它添加到代码中时它仍然不起作用。它会产生相同的错误。
标签: swift async-await urlsession swift-package