属性更改时 Observable 不更新列表
Posted
技术标签:
【中文标题】属性更改时 Observable 不更新列表【英文标题】:Observable not update list when attribute change 【发布时间】:2019-11-19 16:58:29 【问题描述】:我正在使用列表中的 SwiftUI 来显示对象数组并使用 ObservableObject 来跟踪对象的变化。如果我通过添加或删除列表来更改数组将自动更改。
但是如果我改变对象的属性。列表不会更新。
任何建议更新列表,即使属性得到更新或强制更新列表。
List(self.carService.partList) part in
RowList(part:part)
【问题讨论】:
如果您添加您的ObservableObject
和包含列表的视图结构,我们将能够更有效地回答您的问题。
请显示您更改的属性代码
【参考方案1】:
推送到主线程?也许更新正在发生,只是因为线程不匹配而没有正确列出
【讨论】:
我在DispatchQueue.main.async
下所做的任何更改
就像我说的,如果我添加或删除数组的任何成员,它工作正常。【参考方案2】:
您需要显示更多代码来解决您的问题。
在大多数情况下,ObservedObject 不会因为属性的无效使用而更新。为了确保您想告诉 Object 数据已更改,我们可以告诉 Object 通知视图。 给出了如何使用 ObservedObject 和 Published 属性的示例。
import Combine
import SwiftUI
class A: ObservableObject
@Published var id: String = ""
@Published var value: String = ""
struct Example: View
@ObservedObject var obj: A
var body: some View
Button(action:
self.obj.value = "Hi im changed"
self.obj.objectWillChange.send()
)
Text("Change me")
要通知视图数据已更改,请记下以下行:
self.obj.objectWillChange.send()
希望这可行,祝你好运!
【讨论】:
以上是关于属性更改时 Observable 不更新列表的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 ko 计算 observable 在其值更改时不会更新绑定的 UI 元素?
如何获得仅在 redux 状态的对象数组中的属性值更改时才发出的 Observable?
“MonoTypeOperatorFunction<any>”类型的参数不可分配给“UnaryFunction<Observable<any>, Observable