如何在核心数据中创建和获取关系记录

时间:2012-02-18 13:51:09

标签: core-data relationship fetch

现在总有新手问题......我只想说,我已经找到了一个完全没有问题的解释但却没有找到任何“愚蠢”的东西。问题是......

我创建了一个核心数据堆栈,其中有一个名为“Client”的实体和一个名为“Car”的实体。这是一对多的关系。

到目前为止,我已经使用apple教程中的代码成功创建并获取了客户端列表。一旦我选择了一个客户端,我就会推送一个新的tableViewController,它应列出所选客户端的Cars。

第一个问题......

我习惯于sql风格的数据库编程,如果我想将汽车添加到客户端,我只需在'Car'记录中添加一个'ClientID'标签,从而提供与特定客户的关系。如何在核心数据中执行等效操作?我从阅读中理解的是添加属性以指向其他实体是不必要的 - 核心数据为您维护这种关系,而不需要实体中的其他属性。

第二个问题......

当我创建'car'实体并成功将其链接到'Client'时。如何创建一个只检索客户端汽车的fetch。我可以改变苹果的代码来获取所有汽车,但我不知道如何获取与给定客户相关的汽车。从我的阅读,我认为我需要使用谓词,但苹果谓词文档是独立的,并没有提供如何将其与核心数据一起使用的明确指导

我意识到这是多么的点头,但我无法在任何地方找到白痴指导......

任何帮助/代码都非常受欢迎。

1 个答案:

答案 0 :(得分:1)

好的,我已经回答了我自己的问题。对于那些已经找到我的问题并希望知道答案的人来说,这非常简单......

首先,创建一个'Car'并将其与'Client'相关联。首先像往常一样创建一个“汽车”,然后简单地添加这行代码......

newCar.client = client;

这会将“Car”记录中的“客户”关系设置为相关客户端。

其次,我曾经想过如果你有一个客户并且需要找到他们的汽车,你需要一个新的取件。但不是这样!只需使用以下代码行......

NSSet *cars = client.cars;
[self setCarsArray:[cars allObjects]];

第一行使用“client.cars”o按照对象图确定此客户端拥有的汽车并在NSSet中填充它们。然后第二行填充NSArray,该NSArray在当前viewcontroller中声明,可用于显示目的。

排序!!