Objective c 删除核心数据实体

Objective c 删除核心数据实体,objective-c,ios,core-data,Objective C,Ios,Core Data,我正在做一个项目,涉及到核心数据的良好使用。我已经用了几个月了。我有个小问题。我有两个不同的实体,一个叫做学生,另一个叫做课程。学生和课程之间的关系是一对多的。我经常从远程json更新实体。因此,有时课程实体中存在与学生实体没有关系的悬空指针。需要删除这种类型的实体。删除这样的对象更好吗 Courses(points to student) <------------- Student ----------------> Course (Points to

我正在做一个项目,涉及到核心数据的良好使用。我已经用了几个月了。我有个小问题。我有两个不同的实体,一个叫做学生,另一个叫做课程。学生和课程之间的关系是一对多的。我经常从远程json更新实体。因此,有时课程实体中存在与学生实体没有关系的悬空指针。需要删除这种类型的实体。删除这样的对象更好吗

              Courses(points to student) <------------- Student ----------------> Course (Points to student) 
                                                           |
                                                           |
                                                           |
                                                           |
                                                Course (Points to student)

                       Course(has no pointer to student, no foreign key to relate with student)
课程(指向学生)课程(指向学生)
|
|
|
|
课程(指向学生)
课程(没有指向学生的指针,没有与学生相关的外键)

当课程没有学生时,您确定需要删除该课程吗?不过,这门课可能是有效的。我认为你应该取消关系,所以当你删除一个学生时,所有指向它的课程都会停止引用该学生


在我看来,你可能需要检查你的密码,这样它们就应该无效了

执行此操作的简单方法是针对
课程
创建获取请求和查询。显然,您需要使用
NSPredicate
删除没有学生的
课程

如果您的
课程
学生
有反向关系,称为
课程学生
,您可以设置以下谓词

[NSPredicate predicateWithFormat:@"coursesToStudent == nil"];
这里我假设
课程
学生
有一对一的关系

这样,获取请求结果将有
课程
,而没有学生。结果,调用
deleteObject
,您就完成了

有关使用谓词设置获取请求的信息,请参阅

关于你的模型,我会再做一个。例如,使用三个实体:

Student
Course
Enroll
在哪里


希望这能有所帮助。

是的,在这种情况下,删除课程似乎很奇怪。但,我有一种类似类型的数据结构,在这种结构中,删除实体时的关系将在表中具有悬空列。
Student
- attributes you want
- toEnroll [one-to-many rel to Enroll with cascade rule]

Course
- attributes you want
- toEnroll [one-to-many rel to Enroll with cascade rule]

Enroll
- attributes you want
- toStudent [one-to-one rel to Student with nullify rule]
- toCourse [one-to-one rel to Course with nullify rule]