【发布时间】:2011-06-22 04:07:52
【问题描述】:
我只是冒险并在 CoreData 之上重写了我的应用程序(以前我使用自己的内部保存格式)。
虽然我对 deleteObject: 的行为有点困惑,但事情大部分都在工作。
我有一个对象,它是我的图表的一部分,当我删除它时,该对象似乎没有发生任何事情。该对象具有一些关系,其中一些是“级联”,一些是“无效”。与对象的每个关系都具有反向关系。
删除对象后,唯一似乎发生变化的是在我的对象上设置了“isDeleted”标志。所有的关系都像以前一样存在。
如果我尝试使用 NSFetchRequest 查找对象,它不会找到已删除的对象。但是,如果我使用 KVC 关系遍历我的图,则返回的 NSSet 包含所有对象,包括已删除的对象。
在我将 save: 方法发送到我的 ManagedObjectContext 之后,一切都如我所料。
当我进行删除时,我是否需要手动清除我不想要的关系,或者我需要持续保存以保持我的数据健全?这对我来说似乎非常违反直觉。
我可以做些什么来“提交”删除,或者至少让我的对象图在没有保存的情况下保持理智。每次我想修改我的图表时都进行保存似乎有点激烈。
谢谢, 罗恩
附言以下是一些我觉得很奇怪的行为:
在删除对象之前,这是对具有 categoryObjs “对多”关系的父对象的“描述”:
categoryObjs = (
"0x613e1a0 <x-coredata://1A1AE9E7-66B1-4F4D-A7AB-07D4504CAE2C/TestCategory/p9>",
"0x613e1b0 <x-coredata://1A1AE9E7-66B1-4F4D-A7AB-07D4504CAE2C/TestCategory/p12>",
"0x613e190 <x-coredata://1A1AE9E7-66B1-4F4D-A7AB-07D4504CAE2C/TestCategory/p7>"
);
删除“p12”对象(上图中间那个)后,通过KVC访问时,关系的状态并没有改变。如果我尝试获取 TestCategory 实体,则只找到两个。
“保存:”后 p12 对象消失:
categoryObjs = (
"0x613e1a0 <x-coredata://1A1AE9E7-66B1-4F4D-A7AB-07D4504CAE2C/TestCategory/p9>",
"0x613e190 <x-coredata://1A1AE9E7-66B1-4F4D-A7AB-07D4504CAE2C/TestCategory/p7>"
);
【问题讨论】: