核心数据`deleteObject:`问题!

时间:2011-04-12 05:59:16

标签: iphone objective-c ios core-data entity-relationship

我在核心数据中有以下实体,如下图所示。 Core Data Model

所有关系的删除规则都是级联。

问题: 当我删除级别2中的任何一个实体对象并执行[context save:&error];表Entity1中的所有其他对象获取数据错误并且应用程序因为无法再读取Entity1对象而崩溃,从而EXC_BAD_ACCESS 1}}错误。

我正在使用此代码

for(Entity1 *entity in listOfEntitys)
{
    if(entity.Relation1)
        [context deleteObject:entity.Relation1];

    if(entity.Relation2)
        [context deleteObject:entity.Relation2];

    if(entity.Relation3)
        [context deleteObject:entity.Relation3];
}
[context save:&error];

它不像我从未从核心数据中删除任何对象,但这是唯一出现问题的地方。任何人都可以帮助。

感谢。
PS。我在SO上看过其他问题,但没有一个像我一样。

修改

我的问题是,当我尝试从第2级删除任何一个对象时,entity1中的所有对象都会出现数据错误。有点像这样。

Printing description of listOfEntitys: 
(
    "<Entity1: 0x4dc3d80> (entity: Entity1; id: 0x4dc2d60 <x-coredata://DF11191D-0BE9-4A63-955D-0A43153290A4/Entity1/p5> ; data: <fault>)",
    "<Entity1: 0x5b06ea0> (entity: Entity1; id: 0x5b077d0 <x-coredata://DF11191D-0BE9-4A63-955D-0A43153290A4/Entity1/p6> ; data: <fault>)",
    "<Entity1: 0x4dc2cf0> (entity: Entity1; id: 0x4dc2df0 <x-coredata://DF11191D-0BE9-4A63-955D-0A43153290A4/Entity1/p7> ; data: <fault>)",
    "<Entity1: 0x4dc2b80> (entity: Entity1; id: 0x4dc3640 <x-coredata://DF11191D-0BE9-4A63-955D-0A43153290A4/Entity1/p8> ; data: <fault>)" 
)

2 个答案:

答案 0 :(得分:6)

来自Core Data Programming Guide

  

如果关系删除规则是   级联,然后删除一个对象可能   导致删除其他人。

如果您不希望在删除给定对象时删除相关对象,则这些关系的删除规则应该是“cascade”以外的其他规则。你可能想要'nullify'而不是。

答案 1 :(得分:3)

不要将反转设置为级联,因为它就像一个点燃的保险丝在各个方向烧毁。将它们设置为无效。