如何设置核心数据实体之间的关系?

时间:2018-04-11 12:22:44

标签: swift xcode core-data swift4 nsfetchrequest

所以,我有一个核心数据数据库,其中已经有多个关系填充了数据。我的问题是我创建了表之间的关系,但我不知道如何在代码中设置它们。我只需要设置一个,然后我可以解决其余的问题。 2 core data tables 例如:大学有“群体”关系,因为一所大学有很多小组。 Groupe表有一个“bellongsToColegiu”关系,因为一个或多个团体在一所大学。

我知道,我必须设置“.bellongsToCollegiu = Colegiu?”或者“.hasGrupe = Grupe?”但我不知道如何以适当的方式取得大学。

enter image description here

目前我在数据库中只有一所大学。

有人可以帮帮我吗?我已经敲了几天头,什么也没得到。

谢谢你,祝你有愉快的一天!

2 个答案:

答案 0 :(得分:0)

您可以获取现有的Colegiu'从数据库或创建一个新的。要获取和创建新的,您需要一个托管对象上下文。托管对象上下文是数据堆栈的最后一部分,它包含3个组件,包括1.持久性存储,2。持久性存储协调器和3.托管对象上下文。

以下是创建堆栈的方法: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/InitializingtheCoreDataStack.html

然后你可以创建一个新对象:

let newItem = NSEntityDescription.insertNewObject(forEntityName: 'Colegiu',
                                                          into: 'reference to managed object context here')

或者您可以通过在托管对象上下文中调用fetch来搜索现有文件,

请记住,CoreData是一个复杂的主题,它需要时间来处理。祝一切顺利。

答案 1 :(得分:0)

当您在它们之间创建实体和关系时,Xcode还会生成用于处理这些关系的代码。处理关系的代码的名称模式是

  1. 与to-one relationship的关系名称相同
  2. addToX和removeFromX(x是关系),用于多对多关系。
  3. 所以你应该在College上有addToHasGrupe(_ value:Grupe),你可以添加一个组实例,Grupe应该有一个belongsToColegiu属性,你可以设置为大学实例。自动完成应该可以帮到你。