我有一个视图,它在出现时会异步更新。 它通过获取一些数据并显示它们的发布者进行更新。 我将此视图放入包装在List中的ForEach中(但与ScrollView中的相同)。
问题是只要我滚动出现的子视图,直到我从屏幕上松开手指时,它们才会更新。
我找到了一个解决方案(在this question之后)放在ObservableObject
这个队列中:
private let queue = DispatchQueue(label: "datafetching.queue", attributes: .concurrent)
并将.receive(on: queue)
添加到发布者。
这似乎可行,但是当我这样做时,SwiftUI会说:不允许从后台线程发布更改;确保在模型更新时从主线程(通过诸如receive(on :)之类的运算符)发布值。
此外,某些子视图开始错误地更新。