2014-02-20 22 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