【发布时间】:2013-06-28 18:31:19
【问题描述】:
假设我有一个核心数据对象 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 类的类别中完成吗?
注意:this question 类似,但主要关注运行多个线程,这可能需要更复杂的答案。我正在寻找一些简单的东西,在一个线程上。
【问题讨论】:
-
但 TechZen 对这个问题的回答(我认为)正是您所需要的:
quantity属性的自定义设置器将同时更新“数量”和“总计”。 (很简单,没有线程:-) -
@Martin:TechZen 的回答似乎是指 Xcode 3,Xcode 4 中不再提供该复制选项。
-
但是您仍然可以覆盖托管对象子类的访问器方法。