如何将新Object插入实体并设置该对象与另一个实体的现有对象的关系?

Fid*_*del 2 core-data nsfetchrequest ios swift swift3

我的问题可以应用于任何类型的关系,但在我的情况下,我有一对多.

假设我有一个包含3个对象的实体人:

布赖恩

彼得

斯科特

每个人都可以有很多工作.所以我有一个当前为空的Job实体.两个实体的反向关系已经创建,并且效果很好.只是为了清楚我的问题是没有插入一个对象(我知道该怎么做),是插入的具体方式.

所以更具体的问题是:

如何将一个或多个作业对象插入作业实体并将其中的每一个分配给Core Data中当前存在的一个Person对象?

Fid*_*del 6

在尝试了很多东西之后我终于找到了解决方案.感谢Jimmy如何解决这个问题.关键是要意识到你不能分配已经存在的多个(或者至少我找不到办法),但是你可以在现有的对象中添加许多对象.换句话说,您不能将实体分配给Set,也不能相反.

SWIFT 3

因此,第一步是获取要为其分配多个(在本例中为Jobs)的一个对象(在本例中为Person).这会让你到达那里:

  var person = try MOC.fetch(Person.fetchRequest()).filter { $0.name == "Brian" }
Run Code Online (Sandbox Code Playgroud)

第二个步骤是创建工作的管理对象:

 let job = Jobs(context: MOC)
 job.title = "Computers"
Run Code Online (Sandbox Code Playgroud)

第三步是添加对象的低谷,你取的人:

  person[0].addToJobs(job)
Run Code Online (Sandbox Code Playgroud)

如果要添加多个Job,则可以创建for循环并创建所需的托管对象,并在准备保存时添加它们.例如:

 for title in jobsTitles {

    let job = Jobs(context: MOC)
    job.title = title

    person[0].addToJobs(job)

 }
Run Code Online (Sandbox Code Playgroud)