0

List オブジェクトと ListItem オブジェクトがあり、List が ListItem オブジェクトと 1 対多の関係にある場合、リストを編集するのに最適な設計はどのようなものでしょうか? 私はリストを取得します

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

名前などの単純なプロパティを更新できます

        temporaryList.name = @"new name";

ただし、listItems を更新する最善の方法を考えています。Core Data 構造に従って NSSet に格納され、新しいリストを作成するときに、各 ListItem を次のように格納します。

ListItem *listItem = [ListItem MR_createInContext:_managedObjectContext];

したがって、リストの内容を編集するときは、ListItems の NSSet をリセットしたいと思います。

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

しかし、メモリに保存された古い ListItems を削除する方法も必要です。これについてどうすればよいですか?私が最初に考えたのは、編集中のリストを削除することでした (これにより、カスケード効果が発生し、すべての ListItems が削除され、リストの内容、名前、ID などがすべてリセットされます。これはベスト プラクティスですか? ?

4

1 に答える 1

1

既にお気づきのように、カスケード削除ルールは、オブジェクトが削除された場合にのみ適用されます。たとえば、listが削除されると、関連するすべてのlistItemオブジェクトも削除されます。

が からまでcontentsの対多関係である場合、ListListItem

list.contents = nil;

は削除ルールを適用せず、以前に関連付けられていたオブジェクトを削除しません。

List逆に、 toからの逆関係の削除規則がListItem「無効化」に設定されている場合、リスト アイテムを削除すると関係から削除されるため、list.contents関連するすべてのオブジェクトを反復して削除できます。

Listこれには、オブジェクト自体が保持されるという利点があります。その後、新しいアイテムを作成してリストに追加できます。

于 2013-07-23T17:33:23.937 に答える