【发布时间】:2020-09-24 21:11:21
【问题描述】:
我有一个名为 SocialMealplan 的类,如下所示:
public class SocialMealplan : Identifiable, ObservableObject {
public var id : String {
return owner.id
}
@Published public var owner : YKUser
@Published public var mealplan : Mealplan
init(owner : YKUser, mealplan : Mealplan) {
self.owner = owner
self.mealplan = mealplan
}
}
然后我有以下代码:
struct MealPlanView: View {
@ObservedObject var currentMealplan: SocialMealplan = SocialMealplan(owner: YKUser.none, mealplan: Mealplan.none)
var body: some View {
/* ... */
ForEach(self.currentMealplan.mealplan.meals, id: \.self) { (meal) in
VStack {
NavigationLink(destination: SelectRecipeView(completion: self.updatedMealplan, date: meal.date)) {
MealplanRow(meal: .constant(meal))
}
}
}.onAppear {
self.refreshMealplan()
}
/* ... */
}
func refreshMealplan() {
// Get the mealplan from the server
self.currentMealplan.mealplan = newMealplan
}
}
问题是,当我运行这段代码时,它得到了膳食计划,但是当它试图分配变量时,什么也没有发生。调用 refreshMealplan 并分配变量,但 UI 上没有任何变化,视图也不会刷新以反映新数据。
(当我重新分配所有者变量时,没有任何事情发生)
【问题讨论】:
标签: swift xcode swiftui state combine