我在核心数据中具有以下实体,如下图所示。
所有关系的删除规则是层叠。
问题:
每当我删除第2级的任何一个实体对象并执行[context save:&error];
时,表Entity1中的所有其他对象都会遇到数据错误,并且由于无法再读取Entity1对象而导致应用程序崩溃,从而产生EXC_BAD_ACCESS
错误。
我正在使用此代码
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>)"
)
最佳答案
从Core Data Programming Guide
如果关系删除规则是
级联,然后删除一个对象可能
导致其他人的删除。
如果您不希望在删除给定对象时删除相关对象,则这些关系的删除规则应为“级联”以外的其他规则。您可能想要“无效化”。
关于iphone - 核心数据`deleteObject:`问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5630976/