在ObservedObject中正确使用ObservedObject

时间:2020-03-23 15:25:24

标签: swift core-data swiftui q combine

编辑

我想我已经找到问题了。我的ViewModel扩展了一个抽象类(下面没有表示。我认为我已经删除了它,并且现在可以正常工作。如果问题继续存在,将会产生另一个问题。

目标

我正在尝试将NSManagedObject作为ObservedObject存储在“ ViewModel”中。然后,我想在SwiftUI视图中使用该“ ViewModel”,并捕获和反映对关系的任何更新。

到目前为止,我已经使用了此方法:ObservedObject inside ObservableObject not refreshing View 但是我改用了ObservedObject吗?

“工作中”示例

点击“添加关系模型”将增加计算该关系的文本

查看

struct PlayView: View {
    @ObservedObject var data: ConfigureAndPlayTransaction

    var body: some View {
        VStack {
            Button(action: { 
                self.data.primaryModel.relationshipModels.append(RelationshipModel())
                self.data.objectWillChange.send()
            })
            {
                Text("Add Relationship Model")
            }
            Text(String(self.data.primaryModel.relationshipModels.count))
        }
    }
}

“视图模型”

class ViewModel : ObservableObject {
    @ObservedObject var primaryModel: PrimaryModel

    var anyCancellable: AnyCancellable? = nil

    /// Methods
    init (primaryModel: PrimaryModel) {
        _primaryModel = ObservedObject(initialValue: primaryModel)

        anyCancellable = self.trail.objectWillChange.sink { (_) in
            self.objectWillChange.send()
        }
    }
}

问题

如果我在“ ViewModel”中添加@Published var name: String = "Hello World",则按下“添加关系模型”按钮将不再使以下Text递增。

我对SwiftUI / iOS开发非常陌生。我的头缠在CoreData上,但没有合并。

0 个答案:

没有答案