删除核心数据实体

时间:2012-07-05 11:28:37

标签: objective-c ios core-data

我正在做一个涉及充分利用核心数据的项目。几个月以来我一直在使用它。我有一个小问题。我有两个不同的实体,一个名为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)

2 个答案:

答案 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

希望有所帮助。