【发布时间】:2019-04-29 19:50:38
【问题描述】:
我的项目有 CoreData 数据库,其中包含 1 个根上下文和多个子上下文。
我有一个 ViewModel,其中包含一个项目 (NSManagedObject)。当我在 Item 中更改某些内容时,会在根上下文中进行持久化,然后自动合并到所有子上下文中。
我想将NSFetchedResultsController 替换为ReactiveSwift 信号/属性,以观察项目对象的变化。
视图模型:
var itemProperty: MutableProperty<Item> = MutableProperty(contextItem)
视图控制器:
self.viewModel.itemProperty.signal.observeValues{ (item: Item) in
let newName = item.name
print("name: \(newName!)"
}
在我在其他地方更改项目名称后,更改会传播到 ViewModel 子上下文(NSFetchedResultsController 会收到通知),但信号永远不会推送新的 item 事件。
也许是因为NSManagedObject 引用永远不会改变?我知道我可以使用producer(forKeyPath: "propertyKeyPath" ) 观察对象中特定属性的变化,但我不想只观察项目的一个特定属性,我想观察所有变化。
有没有办法观察所有对象属性的任何变化??
【问题讨论】:
标签: ios swift core-data reactive-cocoa reactive-swift