gpt4 book ai didi

swift - 如何在 Swift 5.5 中将 async/await 与 SwiftUI 一起使用?

转载 作者:行者123 更新时间:2023-12-04 10:54:19 25 4
gpt4 key购买 nike

我一直在测试 Swift 5.5 版本中预览的异步/等待功能,但我无法从异步函数收集结果并使用 SwiftUI 显示它们。这是我的代码:

import SwiftUI

struct AsyncTestView: View {
@State var text: String?

// Async function
func asyncGetText() async -> String {
Thread.sleep(forTimeInterval: 10)
return "My text"
}

// Stores the result of async function
func fetchText() async {
let text = await asyncGetText()
DispatchQueue.main.async {
self.text = text
}
}

var body: some View {
Text(text ?? "Loading")
.onAppear(perform: fetchText)
}
}
这会导致以下错误:

'async' call in a function that does not support concurrency
Add 'async' to function 'fetchText()' to make it asynchronous


添加 asyncfetchText()函数然后在 .onAppear() 上导致以下错误功能:

Invalid conversion from 'async' function of type '() async -> ()' to synchronous function type '() -> Void'


this article ,他们使用 @asyncHandler标记以注释 fetchText函数,但是这会导致警告: '@asyncHandler' has been removed from the language' .

最佳答案

根据WWDC session 中的新信息Meet async/await in SwiftWWDC , 在 23m:28s 现在使用:

async {
await someAsyncFunction()
}
session 截图。
enter image description here

关于swift - 如何在 Swift 5.5 中将 async/await 与 SwiftUI 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67375031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com