试图掌握核心数据中的关系

Posted

技术标签:

【中文标题】试图掌握核心数据中的关系【英文标题】:Trying to grasp relationships in core data 【发布时间】:2013-10-04 16:19:46 【问题描述】:

我正在尝试了解核心数据关系。我有两个实体。一个叫做Driver,它有一个(汽车司机的)姓名、年龄、性别。另一个实体称为 Cars,其中包含汽车品牌、型号等。

许多汽车都有一个司机汽车司机之间存在反比关系(如果我没记错的话)

我为每个实体创建一个 NSManagedObject 的子类。然后我尝试设置值并执行。

一些伪代码:

Driver *thisDriver = [NSEntityDescription ...
Car *thisCar= [NSEntityDescription ...
[thisCar setMake@"ford"];
// etc..

[thisDriver setName:@"bob"];
// etc..
[thisDriver setCar:thisCar];  // THIS PART NO GOOD =(

我注意到 thisCar.. 中有一个方法“setCar”接受驱动程序变量.. 将父级设置为子级似乎很奇怪,而不是相反。我在 NSSet 中创建了许多 Car 的匿名实例,然后将它们存储到 Driver 中,这对我来说很有意义。然后保存。

另外,当我获取 Driver.. 我如何获取所有相关的 Cars 呢?我能够获取 Cars,并获取 driver,但反之则不行..

也许我在使用外键来获取相关表的所有记录的传统数据库方面考虑太多了?不过应该差不多吧?

【问题讨论】:

【参考方案1】:

所以听起来你希望一个司机拥有多辆汽车,这意味着你需要在 Drivers 和 Cars 之间建立许多关系。然后你就可以做这样的事情了:

[myDriver addCarObject:newCar];

【讨论】:

我确实创建了一个对多的关系..但我没有看到在我的驱动程序类中生成了该函数..也许我错误地创建了我的关系?它有双箭头和一切?有没有办法将一组汽车放入驾驶员中? 听起来关系不正确。你能从你的数据模型中发布一张你的汽车和司机关系的照片吗? 我的 Mac 不在了。我会在今天晚些时候回来。它看起来完全像这样,虽然位置是司机,签到是汽车media.amazonwebservices.com/CoreData-Model.png 关系是否曾一度发送到 toOne 并发生了变化?如果是这样,您是否重新生成了模型类?此外,当您执行“[myDriver add”之类的操作时,会显示哪些代码完成选项? 我今天晚些时候回到我的电脑上时会回来讨论这个问题。我不想做出任何错误的假设。

以上是关于试图掌握核心数据中的关系的主要内容,如果未能解决你的问题,请参考以下文章

试图设置核心数据关系导致崩溃

如何在核心数据关系真正改变之前观察它?

如何在核心数据中以一对多关系链接现有值?

如何创建源列表以将核心数据显示到多个关系?

Objective C - 核心数据和建立关系?

跨设备同步核心数据