如何从异步函数发布更改

How to publish change from async function

我有 class 符合 ObservableObject 和

@Published var fileContent = ""

定义。此外,我有返回 String 的 getFileContent() 异步函数。 如果我这样调用函数

Task {
    fileContent = await getFileContent(forMeasurementID: id, inContext: context)
}

代码已编译且应用程序运行正常,但 XCode 抱怨“紫色”错误“不允许从后台线程发布更改;确保从主线程发布值(通过像 receive(on :)) 关于模型更新。”。我试图用 receive(on:) 进行详细说明,但到目前为止没有成功。 我会很感激任何提示。谢谢

除非您处于主线程中,否则您无法更改应用的状态(更改 @Published 变量)。

您的代码是这样工作的:

Task {
    let content = await getFileContent(forMeasurementID: id, inContext: context)
    DispatchQueue.main.async {
        fileContent = content
    }
}