我正在将核心数据添加到我的 iPad 应用程序中。我的一般程序是通过将代码放入应用程序委托来测试代码。当我对正确解析代码感到满意时,我会将其移至应用程序中其他地方的适当方法。到目前为止,这对添加对象有效。但我在删除对象时遇到问题。我可以通过选择它们并删除它们来从应用程序委托中很好地删除它们,现在我在应用程序启动时将它们全部删除,只是为了保持数据库清洁,直到我有核心数据代码工作。
我的工作流程已经足够了。我现在遇到的问题是从适当的位置删除一个对象。让我们看看我能否简要描述一下我的设置。
我有两个班级,为了讨论起见,让我们给他们Car
打电话Tire
。我不知道约定是什么,所以我想出了自己的,即C_
在关联的 Core Data 对象的名称开头添加与这些对象关联的对象。所以我有两个额外的课程,C_Car
和C_Tire
. 每辆车可以有几个轮胎,所以Car
有一个属性tires
,它是一个NSSet
of Tire *
。另外Car
还有一个称为CarCD
type的属性C_Car *
,并Tire
有一个称为TireCD
type的属性,C_Tire *
以便每个对象都可以跟踪其关联的核心数据对象(CD 用于核心数据)。
Xcode 构建了方便的方法来添加或删除对象。其中包括为汽车添加轮胎的方法。我因此使用它:
tire.tireCD = tireCD; //tire is an object of type Tire *, and tireCD is an object of type C_Tire *.
[self.carCD addTireObject:tireCD];//self.carCD is a property in my view controller of type CarCD *, and tireCD is a local object of type TireCD *.
此外,还有一种方便的方法可以从汽车上卸下轮胎- (void)removeTireObject:(C_Tire *)value;
。我发现在我的视图控制器中的任何地方都有:
[tireObject removeFromSuperview];//tireObject is a (Tire *) object.
我只是将其更改为:
[carObject removeTireObject:tireObject.tireCD];
[tireObject removeFromSuperview];
第一行应该从NSSet
核心数据对象中删除对象。第二行从应用程序中使用的汽车对象中移除该对象。
问题是,执行此代码时,我在调试器窗口中看不到任何 SQL 生成。我错过了什么吗?
此外,如果您想对命名约定发表评论,现在是我采用传统命名的时候了。