想象一下,我有一个核心数据对象 Product。每个产品都有一个quantity
、price
和total
属性。从表中检索项目时,总计是为了提高效率。(我知道可能有一种有效的方法可以使用获取的属性来获取计算值,但这只是一个例子,这个答案不是我想要的。)
+------+----------+-------+-------+
| Name | Quantity | Price | Total |
+------+----------+-------+-------+
| Foo | 1 | 20 | 20 |
| Bar | 0 | 30 | 0 |
| Baz | 3 | 5 | 15 |
+------+----------+-------+-------+
假设price
产品的 永远不会改变。但是,情况quantity
确实发生了变化。每当quantity
发生更改时,我都希望收到通知,以便我可以重新计算total
. 如果可能,我想避免使用 KVO,因为我有一个自定义的 NSManagedObject 类product
,并且我想覆盖它的一种方法以更新价格,而不必担心注册/取消注册其自身属性的通知。
这个方法应该只在价格改变时调用,而不是每次对象上的任何属性都改变时调用。
我还希望在更改值时立即触发此方法(例如,不是在保存上下文之前),以便我可以在total
保存上下文之前访问新属性。
我应该重写哪个方法,它可以在我的 Product 类的类别中完成吗?
注意:这个问题类似,但主要涉及运行多个线程,这可能需要更复杂的答案。我正在寻找简单的东西,在一个线程上。