【问题标题】:Observable not update list when attribute change属性更改时 Observable 不更新列表
【发布时间】:2019-11-19 16:58:29
【问题描述】:

我正在使用列表中的 SwiftUI 来显示对象数组并使用 ObservableObject 来跟踪对象的变化。如果我通过添加或删除列表来更改数组将自动更改。

但是如果我改变对象的属性。列表不会更新。

任何建议更新列表,即使属性得到更新或强制更新列表。

 List(self.carService.partList){ part in
     RowList(part:part)
 }

【问题讨论】:

  • 如果您添加您的ObservableObject 和包含列表的视图结构,我们将能够更有效地回答您的问题。
  • 请显示您更改的属性代码

标签: ios arrays list observable swiftui


【解决方案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()

希望这可行,祝你好运!

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 2020-02-11
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多