Iphone 核心数据关系删除操作-级联vs.取消vs.拒绝vs.无操作

Iphone 核心数据关系删除操作-级联vs.取消vs.拒绝vs.无操作,iphone,core-data,Iphone,Core Data,核心数据让我大吃一惊。我有两个对象:,Card和CardSet,它们彼此之间存在多对多关系,即在CardSet a中可以有卡1、2和3,在CardSet B中可以有卡2、4和5 我正在尝试设置我的删除操作,以便: 如果我删除一张卡,它将从它所属的所有卡集中删除。(即,删除卡片2,然后删除卡片集A={1,3}和卡片集B={4,5}) 如果我删除一个卡片集,则该集中的所有卡片都将被删除,但属于另一个卡片集的除外。也就是说,删除卡片集A,那么卡片集B仍然是{2,4,5} 我的数据结构有两个关系定义了这

核心数据让我大吃一惊。我有两个对象:,Card和CardSet,它们彼此之间存在多对多关系,即在CardSet a中可以有卡1、2和3,在CardSet B中可以有卡2、4和5

我正在尝试设置我的删除操作,以便:

  • 如果我删除一张卡,它将从它所属的所有卡集中删除。(即,删除卡片2,然后删除卡片集A={1,3}和卡片集B={4,5})
  • 如果我删除一个卡片集,则该集中的所有卡片都将被删除,但属于另一个卡片集的除外。也就是说,删除卡片集A,那么卡片集B仍然是{2,4,5}
  • 我的数据结构有两个关系定义了这种多对多关系:CardSet.cards和Card.CardSet。CardSet.cards的删除操作是
    cascade
    (因此,如果我删除一个CardSet,它的所有卡片都会被删除),而CardSet.CardSet的删除操作是
    null
    (因此,如果我删除一张卡片,这些卡片集也不会被裸露)


    但是,在当前设置中,如果我删除了卡片集A,那么卡片集B仍然是{2,4,5},但是卡片2实际上已从数据存储中删除,这导致在尝试访问卡片集时出现核心数据错误。如果卡仍被另一个卡组持有,我应该在这里做些什么来确保它们不会被删除?

    您想将
    卡。卡组
    设置为
    拒绝
    ,而不是
    。这样,卡将不会被移除,直到它不再与任何卡集相关

    否认

    如果至少有一个对象位于 关系目标,然后是 无法删除源对象

    为了 例如,如果要删除 部门,您必须确保 那个部门的员工是 首先转移到其他地方(或 被解雇!)否则该部门 无法删除


    不幸的是,这并没有起到作用,它只是使删除项目变得不可能。