2014-02-20 23 views
0

我正在使用核心数据来存储与另一个实体(ScheduleDay)具有多对多关系的User实体。每当我同步我用这条线来重置序集:做NSManagedObjectContext自动删除对象

self.user.scheduleDays = [NSOrderedSet orderedSet]; 

我的问题是在过去被删除,或是否有更好的方式,以确保我删除旧的天,以不弄乱NSManagedObjectContext或节省太多不必要的数据。

回答

2

不,这不会自动删除这些对象。

在将scheduleDays设置为新集之前,您必须自己手动删除它们。

要删除所有scheduleDays实体,例如,你可以这样做:

NSManagedObjectContext *context = self.user.managedObjectContext; 

for (NSManagedObject *object in self.user.scheduleDays) 
{ 
    [context delete:object]; 
} 

self.user.scheduleDays = [NSOrderedSet orderedSet]; 

NSError *error; 
[context save:&error]; 

if (error) 
{ 
    // Handle error 
} 
+0

这会带来什么长期影响?保存的数据量会永远增加吗? – carloabelli

+0

长期影响可能是由Core Data管理的底层数据存储(通常是基础'SQL'数据库)将有越来越多的对象添加到其中,这些对象不是必需的。最好实际上只是删除这些内容,将'scheduleDays'设置为新集,然后开展业务。 :D –

+0

谢谢你的帮助。我会在能够接受时接受。 – carloabelli