0

person->phones の関係があると仮定しましょう (もちろん 1 対多)。最初の挿入保存は、私が行っている場所で正しく機能しています:

    if (does not exist) {
      user = (Member *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:ctx];
} else {
    searchObjectsForEntity:@"Person" withPredicate:pred andSortKey:nil andSortAscending:NO andContext:ctx];

これを、挿入または既存のいずれかを行う 1 つの insertNewObjectForEntityForName に置き換える必要がありますか?

次に、phones オブジェクトを作成して Person に追加する必要があります。これは次のように行います。

NSManagedObject* mo=nil;
Phone* phone = (Phone *)[NSEntityDescription insertNewObjectForEntityForName:@"Phone"
                                                      inManagedObjectContext:ctx];
[mutableSetOfPhones addObject:mo];
user.phones = phones;

そこで、電話管理オブジェクトの新しいインスタンスを作成し、それをセットに追加して person に追加し、その後保存します。同じコードを使用して Person インスタンスを再保存する場合、つまり、電話の編集/挿入/削除、またはユーザー データへのその他の変更を除いて、これはすべて問題ありません。電話の古いレコードは DB に残り、どの個人にも関連付けられなくなります。

これを行う正しいアプローチは何ですか?ID による編集/削除を確認するには、user.phones を反復処理する必要がありますか? 更新されたレコードを保存する前に、古いインスタンスを削除する必要がありますか (はるかに簡単です)? 推奨されるアプローチは何ですか?おそらく私は完全に間違ったことをしていますか?

4

0 に答える 0