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];

所以,当我去编辑一个列表的内容时,我想重置它的 NSSet 的 ListItems

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

但是我还需要一种方法来删除保存在内存中的旧 ListItems。我该怎么办?我的第一个想法是删除正在编辑的列表(这将导致级联效应发生,并将删除所有 ListItems,然后重置所有列表的内容、名称、id 等。这是最佳实践吗? ?

4

1 回答 1

1

正如您已经注意到的,级联删除规则仅在删除对象时应用。例如,如果list被删除,则所有相关listItem对象也将被删除。

如果是从tocontents的一对多关系,那么ListListItem

list.contents = nil;

不应用任何删除规则,也不删除以前相关的对象。

但是您可以反过来:如果从Listto的反向关系的删除规则ListItem设置为“Nullify”,则删除列表项会将其从关系中删除,因此您可以迭代list.contents并删除所有相关对象。

List这具有保存对象本身的优点。然后您可以创建新项目并将它们添加到列表中。

于 2013-07-23T17:33:23.937 回答