如何从异步函数发布更改
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
}
}
我有 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
}
}