• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何从 2 个不同的 View Controller 观察 NSManagedObject 记录的变化?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:56:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

基本上,我有一个 masterView Controller ,它有 3 个容器,我正在更新一个 NSManagedObject,例如Person.firstName = "Ehab")!

在其他 2 个容器中,一个有属性 [Person],另一个有属性 [Person: String],这两个集合属性都有已更改的记录。

我正在寻找的是,当我更改 (Person.firstName = "taylor") 时,我需要其他 2 个类如何通知数组和字典有关刚刚发生的更改!

一种方法是使用 NotoficationCenter 并在 UserInfo 中传递修改后的对象。但是有更简单的方法吗??



Best Answer-推荐答案


使用 NSManagedObjectContextObjectsDidChange

在你的 2 个容器 viewDidLoad 中,添加一个观察者

override func viewDidLoad() {
    super.viewDidLoad()
    let notificationCenter = NotificationCenter.default
    notificationCenter.addObserver(self, selector: #selector(managedObjectContextObjectsDidChange(_), name: Notification.Name.NSManagedObjectContextObjectsDidChange, object: yourManagedObjectContext)


@objc func managedObjectContextObjectsDidChange(_ notification: Notification){
    guard let userInfo = notification.userInfo else {
        return
    }

    if let updates = userInfo[NSUpdatedObjectsKey] as? Set<NSManagedObject> {
        for update in updates {
            if let person = update as? Person {
                // update person info here

            }
        }
    }
}

希望这对您有所帮助。

关于ios - 如何从 2 个不同的 View Controller 观察 NSManagedObject 记录的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719086/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap