当 coreData 值发生变化时,如何更新我的其他视图?
Posted
技术标签:
【中文标题】当 coreData 值发生变化时,如何更新我的其他视图?【英文标题】:How do I update my other views when a coreData value changes? 【发布时间】:2021-04-02 15:23:00 【问题描述】:截至目前,在我的个人资料视图中,当用户更新其宏目标时,我希望其他视图能够立即加载它们并将它们呈现到视图中。每次用户打开应用程序时,是否有任何方法可以将环境对象设置为等于某些 coreData 实体值?
所以我的环境对象:
import Foundation
class UserInfoModel: ObservableObject
static let shared: UserInfoModel = UserInfoModel() // <<: Here
struct DailyCalorieGoals: Identifiable
var id = UUID()
var calorieGoal: Double
var fatGoal: Double
var proteinGoal: Double
var carbGoal: Double
@Published var personDailyCalorieGoals = DailyCalorieGoals.init(calorieGoal: 2400, fatGoal: 40, proteinGoal: 40, carbGoal: 40)
所以我有两个视图,作为选项卡视图。当我输入一些数据时,我有一些 coreData 值在用户离开应用程序时被保存。如何在应用程序打开时将这些环境对象设置为等于该数据?
【问题讨论】:
【参考方案1】:也许您可以使用NotificationCenter 在每个视图控制器中运行@objc
方法,并在您修改CoreData 模型的值时发布通知。
要回答有关如何使用最新数据初始化视图的问题,只需查看viewDidLoad()
,它会在每次应用再次打开时运行。从 coredata 中获取对象,并使用它们的值来设置环境对象的价值。
【讨论】:
以上是关于当 coreData 值发生变化时,如何更新我的其他视图?的主要内容,如果未能解决你的问题,请参考以下文章
当关系发生变化时,是不是有更新 NSManagedObject 的好方法?
当 ForEach 中发生 onDelete 时如何更新其他 CoreData?
当 ref 的值发生变化时,Vue 不会更新模板 Vue 3