代码之家  ›  专栏  ›  技术社区  ›  Adrian Draghici

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

  •  0
  • Adrian Draghici  · 技术社区  · 7 年前

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

    我知道,我必须设置“.bellongsToCollegiu=Colegiu?”或“.hasGrupe=Grupe?”但我不知道如何以适当的方式把学院招来。

    enter image description here

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

    谁能帮我一下吗?我敲了几天脑袋,一无所获。

    谢谢你,祝你今天愉快!

    2 回复  |  直到 7 年前
        1
  •  0
  •   Joakim Danielson    7 年前

    创建实体及其关系时,Xcode还会生成处理这些关系的代码。处理关系的代码的名称模式是

    1. 与to-one关系的关系名称相同
    2. 对于to many关系,addToX和removeFromX(x是关系)。

    因此,您应该在College上有addToHasGrupe(\uvalue:Grupe),您可以将组实例添加到其中,并且Grupe应该有一个belongsToColegiu属性,您可以将其设置为College实例。自动完成应该对您有所帮助。

        2
  •  0
  •   Arash    7 年前

    您可以从数据库中获取现有的“Colegiu”,也可以创建一个新的“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是一个复杂的主题,需要时间来了解。祝你一切顺利。