代码之家  ›  专栏  ›  技术社区  ›  Keshu R.

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

  •  1
  • Keshu R.  · 技术社区  · 7 年前

    我有一个名为“课程”和“其他任务”的实体。要完成一门课程,用户可以创建多个任务。现在我有了一个带有uitextfields的屏幕,它获取课程数据并存储它。用户可以创建多个课程并在表视图中查看它们。

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

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

    附数据库截图: 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 回复  |  直到 7 年前
        1
  •  1
  •   Dheeraj D    7 年前

    将你的课程作业对象传递给下一个按下按钮的控制器并访问它。

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

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

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

    访问方式:

    objCourseWork.tasks
    objTask.courseWork
    
        2
  •  0
  •   Marc T.    7 年前

    如果您的模型中已经定义了您的关系,那么您只需将任务的Course属性设置为它应该与之相关的Course对象。

    enter image description here

    玩得高兴。