我应该在播放列表实体中使用哪种删除规则?

时间:2016-05-07 02:37:44

标签: ios swift core-data

在我的数据模型中,我有一个播放列表实体,它与播放列表中的项目具有多对多的关系,并具有反向关系。

当删除播放列表时,我希望删除其中的所有内容,因此我使用Cascade删除规则。删除播放列表中的项目时,只需删除该项目即可。我应该使用哪条规则?

我将说明这一点。

首先,托管对象看起来像这样

Playlist 1
items: a, b, c

Playlist 2
items: d

item a
playlist: 1

item b
playlist: 1

item c
playlist: 1

item d
playlist: 2

如果我删除播放列表1,它将如下所示:

Playlist 2
items: d

item d
playlist: 2

如果我删除d,它将如下所示

Playlist 1
items: a, b, c

Playlist 2
items: 

item a
playlist: 1

item b
playlist: 1

item c
playlist: 1

从文档中,我不知道用于反向关系的规则。

  • 拒绝:只有在没有播放列表的情况下才会删除该项目。但是由于多对多关系中的级联规则,项目将始终具有播放列表

  • Nullify:仅删除播放列表与项目之间的关系,但不删除该项目。我希望删除该项目。

  • 级联:显然我不想在删除项目时删除播放列表

  • 无操作:这会导致项目被删除,但播放列表的items属性仍会保留对该项目的引用。

我想我一定是误解了其中一条规则。必须有一个我可以使用的,对吗?

注意:这不是this的副本,因为该OP希望在没有员工时也删除管理器。但是当我的所有项目都被删除时,我仍希望保留播放列表。

1 个答案:

答案 0 :(得分:1)

删除规则引用关系的目标,并说“当删除此对象时,我该如何处理相关对象”。无论如何,您的item都将被删除,因为这就是您正在做的事情。阻止item被删除的唯一规则是deny

如果您希望itemplaylist之间存在反比关系nullify,因为这会将播放列表中的引用移到项目中。