将一个实体的数据添加到其他实体Coredata

时间:2018-05-21 05:33:52

标签: ios swift core-data

我有一个名为Course的实体,另一个名为Tasks。要完成课程,用户可以创建多个任务。现在我有一个带有UITextFields的屏幕,它可以获取课程数据并存储它。用户可以创建多个课程并在桌面视图中查看。

现在,如果用户选择课程,他将从coredata获取课程详细信息,但同时他也可以在该课程中添加任务。

那么我的问题是:我怎么知道正在保存的任务必须链接到用户选择的特定课程。

DB Attached的屏幕截图: Tasks Coursework

评论我是否不清楚。

这是我在CoreDataHandler.swift文件中尝试做的事情

  class func saveTask(courseWorkName : CourseWork, taskName:String, percentComplete:Int, startDate:Date, endDate: Date, notes: String) -> Bool {
    let context = getContext()
    let entity = NSEntityDescription.entity(forEntityName: "Tasks", in: context)
    let task = NSManagedObject(entity: entity!, insertInto: context)

    let entity1 = NSEntityDescription.entity(forEntityName: "CourseWork", in: context)
    let courseWork = NSManagedObject(entity: entity1!, insertInto: context)


  //  task.setValue(entity1, forKey: "courseworkName")
    task.setValue(taskName, forKey: "taskName")
    task.setValue(percentComplete, forKey: "moduleName")
    task.setValue(notes, forKey: "notes")
    task.setValue(startDate, forKey: "startDate")
    task.setValue(endDate, forKey: "dueDate")
    task.setValue(courseWorkName, forKey: "courseWork")


    do {
        try context.save()
        return true
    }catch {
        return false
    }
}

2 个答案:

答案 0 :(得分:1)

将您的courseWork对象传递给下一个推送控制器并访问它。

在将数据输入表格时,请执行以下操作:

objCourse.tasks.append(task)
task.courseWork = objCourse

通过这样做,你可以实现反向关系。使用此功能,您可以使用任务访问课程,反之亦然。

访问它:

objCourseWork.tasks
objTask.courseWork

答案 1 :(得分:0)

如果你的模型中的关系已经如下定义,你只需要将任务的课程属性设置为它应该与之相关的课程对象。

enter image description here

玩得开心。