2013-07-23 34 views
0

如果我有一個List對象和一個ListItem對象,並且List與ListItem有一對多的關係,那麼編輯列表的最佳設計是什麼?我取得與使用核心數據和魔法記錄編輯自定義對象

// Find the list we're supposed to edit 
     temporaryList = [List MR_findFirstByAttribute:@"uniqueID" withValue:_editingListID]; 

列表,然後可以更新其簡單的屬性,如姓名

 temporaryList.name = @"new name"; 

但是我不知道如何最好地更新其listItems中。它按照核心數據結構存儲在NSSet中,並且在創建新列表時將每個ListItem存儲在以下內容中。

ListItem *listItem = [ListItem MR_createInContext:_managedObjectContext]; 

所以,當我去編輯列表的內容,我想重置時listItems

// something like 
list.contents = nil; 
list.contents = mynewarrayoflistitems 

它的NSSet但是,我也需要一種方法來刪除舊listItems中的那被保存在記憶中。我應該怎麼做呢?我的第一個想法是刪除正在編輯的列表(這將導致casacade效果發生,並將刪除所有ListItems,然後重置所有列表的內容,名稱,ID等。這是最佳實踐?

回答

1

正如你已經注意到了,級聯刪除規則僅適用於當一個對象是刪除。例如,如果list被刪除,那麼所有相關listItem對象也將被刪除。

如果contents是要多種關係從ListListItem,然後

list.contents = nil; 

不適用任何刪除規則,並且不刪除以前相關的對象。

但是你可以四處走另外一條道路:如果反向關係 從ListListItem刪除規則設置爲「廢除」,然後刪除列表項將其從關係中刪除 ,這樣你就可以遍歷超過list.contents並刪除所有相關的 對象。

這樣做的好處是保存了List對象本身。然後,您可以創建 新項目並將其添加到列表中。

+0

好,非常感謝您的建議 – Apollo

+0

你也介意快速瀏覽一下相關的Core Data問題:http://stackoverflow.com/questions/17814656/passing-a-managedcontext-with-core-date-神奇紀錄 – Apollo