我正在做一个涉及充分利用核心数据的项目。几个月以来我一直在使用它。我有一个小问题。我有两个不同的实体,一个名为Student的实体,另一个名为Courses的实体。学生和课程之间的关系是一对多的。我经常从远程json更新实体。因此,有时在Courses实体中存在与Student实体没有关系的悬空指针。需要删除此类实体。如何删除这些对象更好?
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)
答案 0 :(得分:1)
您确定在没有学生的情况下需要删除课程吗?课程可能有效。我认为你应该取消关系,所以当你删除学生时,所有指向它的课程都会停止引用该学生。
您可能需要检查relationship delete rules,以便在我看来这些内容无效。
答案 1 :(得分:0)
执行此操作的简单方法是针对Courses
创建提取请求和查询。显然,您需要使用NSPredicate
删除没有学生的Courses
。
如果您的Courses
与[{1}}具有反向相关性,称为Student
,则可以设置以下谓词。
coursesToStudent
我认为[NSPredicate predicateWithFormat:@"coursesToStudent == nil"];
与Courses
有一对一的关系。
通过这种方式,获取请求结果将为Student
而没有学生。结果,请致电Courses
并完成。
有关使用谓词设置抓取请求的信息,请参阅Filter NSFetchedResultsController for nil value?。
关于你的模特,我会设置另一个。例如,使用三个实体:
deleteObject
,其中
Student
Course
Enroll
希望有所帮助。