2012-04-03 57 views
1

我有一个包含'Item'对象的核心数据'ShoppingList'。我将显示订单作为每个商品的属性进行存储。删除NSManagedObject时的附加动作

我想在每次删除商品时更新购物清单中所有其他商品的显示顺序。这样做的代码在我的视图控制器(从删除项目的位置)中使用它时正常工作,但由于它确实与业务对象相关而不是视图,因此最好放置在ShoppingList或Item中。

理想情况下,我希望将它合并到删除项目中。到目前为止,我已经尝试了以下内容:

1)自定义标准Core Data生成的ShoppingList.RemoveItemsObject(确保观察KVOafterafter)。这种方式的奇怪之处在于,传递的项目在到达我的代码之前被剥离了与其他核心数据实体的关系,我需要正确处理显示顺序。 2)自定义Item.didTurnIntoFault。同样适用 - 但这个阶段甚至没有物品的属性。

一个答案就是简单地定义ShoppingList上的一个新方法,它执行我的处理,然后调用原始removeItemsObject。但我更愿意知道,每当从任何地方移除物品时,都会照顾到这一点。例如,当我自定义awakeFromInsert时,这很好地工作 - 我知道每当创建项目时,都会为我设置一些特定的事物。但我很惊讶没有相应的删除。

回答

3

您是否试图实施prepareForDeletion?听起来像是你正在寻找的东西。

The doc says:

您可以实现此方法来执行对象之前所需要的任何操作被删除,如自定义传播关系被撕裂下来之前,或使用键 - 值观察对象的重新配置。

+0

完美 - 谢谢。不知道我错过了这一点。 – 2012-04-03 17:28:03