当 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 的好方法?

当 vuex 商店的值发生变化时,如何更新组件中的状态?

当 ForEach 中发生 onDelete 时如何更新其他 CoreData?

当 ref 的值发生变化时,Vue 不会更新模板 Vue 3

在 SwiftUI 中更新 CoreData 时更新状态变量

当 React JS 中的一项值使用地图函数中的状态发生变化时,如何动态更新购物车中的值?