У меня есть представление, которое обновляется асинхронно при появлении. Он обновляется через издателя, который получает некоторые данные и отображает их. Я помещаю это представление в ForEach, завернутый в список (но он такой же, как в ScrollView).
Проблема в том, что пока я прокручиваю появляющиеся дочерние представления, они не обновляются, пока я не отпущу палец из экран. Я нашел решение (следуя этому вопросу ), поместив в ObservableObject
эту очередь:
private let queue = DispatchQueue(label: "datafetching.queue", attributes: .concurrent)
и добавив .receive(on: queue)
к издателю.
Кажется работать, но когда я это делаю, SwiftUI подчиняется заявлению: Публикация изменений из фоновых потоков не разрешена; не забудьте опубликовать sh значения из основного потока (с помощью таких операторов, как receive (on :)) при обновлении модели.
Кроме того, некоторые дочерние представления начали обновляться неправильно.