您当前的位置: 首页 >  ui

SwiftUI无法监听CoreData托管对象hasChanges属性改变的原因及解决

发布时间:2020-07-11 13:17:47 ,浏览量:0

在这里插入图片描述

问题现象

在SwiftUI中,我们往往需要在CoreData托管对象某个属性被修改时得到通知,尤其是hasChanges属性的改变时,因为在这个时机上,我们正好可以将修改后的对象保存到持久存储中去。

我们知道Combine库为每个托管对象(NSManagedObject)添加了一个publisher方法,自然地我们第一反应会这样创建发布器:

p = publisher(for: \.hasChanges).eraseToAnyPublisher()

然后在SwiftUI视图中这样创建监听:

.onReceive(myManagedObject.p){_ in }

但实际上,这种方式监控hasChanges属性,无法在其改变时给我们发布通知。

那么,到底是什么原因又该如何解决呢?

问题分析 1. 为什么hasChanges属性无法被监控?

在引入Combine后,Combine为NSManagedObject扩展了一个publisher方法,该方法

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0473s