如何检测核心数据对象的属性更改

时间:2021-03-17 16:13:23

标签: swiftui

我有一个名为 Cake 的核心数据实体,它具有以下属性:

  • numberOfIngredientsBeingUsed
  • numberOfIngredientsTotal
  • 颜色
  • 重量

我从实体中读取了一个对象,现在我有了这样的东西

let orangeCake = Cake(type:"orange", context:coreDataContext)

现在我想显示一个 ProgressView。我想传递进度视图,一个绑定 numberOfIngredientsBeingUsed 属性,表示目前正在使用的成分的当前数量,以及一个常规属性 numberOfIngredientsTotal,表示制作蛋糕所需的成分总数。< /p>

这个想法是当主视图上的 numberOfIngredientsBeingUsed 发生变化时,进度视图会更新,因为它是一个绑定属性。

我该怎么做?我想不通,因为 numberOfIngredientsBeingUsed 是蛋糕对象 orangeCake 的一个属性。

1 个答案:

答案 0 :(得分:2)

CoreData 托管对象是 ObservableObject 类型,因此您需要将 Cake 的整个实例注入为 ObservedObject 并在 ProgressView 中使用其属性,而不是传递一个属性,每当相应的对象在代码的其他部分更新时,它就会更新(并刷新视图)。

所以它应该是这样的

struct ProgressView: View {
   @ObservedObject var model: Cake

   var body: some View {
      Text("Progress: \(model.numberOfIngredientsBeingUsed) of \(model.numberOfIngredientsTotal)")
   }
}
相关问题