我有一个名为 Cake
的核心数据实体,它具有以下属性:
我从实体中读取了一个对象,现在我有了这样的东西
let orangeCake = Cake(type:"orange", context:coreDataContext)
现在我想显示一个 ProgressView
。我想传递进度视图,一个绑定 numberOfIngredientsBeingUsed
属性,表示目前正在使用的成分的当前数量,以及一个常规属性 numberOfIngredientsTotal
,表示制作蛋糕所需的成分总数。< /p>
这个想法是当主视图上的 numberOfIngredientsBeingUsed
发生变化时,进度视图会更新,因为它是一个绑定属性。
我该怎么做?我想不通,因为 numberOfIngredientsBeingUsed
是蛋糕对象 orangeCake
的一个属性。
答案 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)")
}
}