我有一个核心数据'ShoppingList',其中包含'Item'对象。我将显示顺序存储为每个项目的属性。
我想在删除项目时更新购物清单中所有其他项目的显示顺序。当我在我的视图控制器(从中删除项目)中使用它时,执行此操作的代码工作正常,但由于它实际上与业务对象而不是视图相关,因此最好放在ShoppingList或Item中
理想情况下,我希望将其合并到项目的删除中。到目前为止,我尝试了以下内容:
1)自定义生成的标准核心数据ShoppingList.RemoveItemsObject(确保在之前观察KVO)。这种方式的奇怪之处在于传递的项目在到达我的代码之前被剥离了与其他核心数据实体的关系,我需要正确处理显示顺序。 2)自定义Item.didTurnIntoFault。同样适用 - 但即使是项目的属性也在这个阶段消失了。
一个答案是简单地在ShoppingList上定义一个新方法来执行我的处理,然后调用原始的removeItemsObject。但我更愿意知道,无论何时从任何地方移除物品,都需要处理。例如,当我自定义awakeFromInsert时,这很有效 - 我知道每当创建一个项目时,我都会设置某些东西。但我很惊讶没有相应的删除。
答案 0 :(得分:3)
您是否尝试实施prepareForDeletion
?听起来它正是你正在寻找的东西。
您可以实现此方法以在删除对象之前执行所需的任何操作,例如在关系被拆除之前进行自定义传播,或使用键值观察重新配置对象。