问题现象
在SwiftUI中,我们往往需要在CoreData托管对象某个属性被修改时得到通知,尤其是hasChanges属性的改变时,因为在这个时机上,我们正好可以将修改后的对象保存到持久存储中去。
我们知道Combine库为每个托管对象(NSManagedObject)添加了一个publisher方法,自然地我们第一反应会这样创建发布器:
p = publisher(for: \.hasChanges).eraseToAnyPublisher()
然后在SwiftUI视图中这样创建监听:
.onReceive(myManagedObject.p){_ in }
但实际上,这种方式监控hasChanges属性,无法在其改变时给我们发布通知。
那么,到底是什么原因又该如何解决呢?