あるオブジェクトを別のオブジェクトに複数回関連付ける必要がある場合に、解決しようとしている問題があります。現在、私は「シーケンス」と「ポーズ」の間に1対多の関係があります。シーケンスを作成するときは、一度にバッチをシーケンスに追加します。コードは次のようになります。
- (void)doneAddingItems {
NSMutableOrderedSet *saveSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.sequence.poses];
[saveSet addObjectsFromArray:self.posesToAdd];
self.sequence.poses = [NSOrderedSet orderedSetWithOrderedSet:saveSet];
[self.managedObjectContext save:nil];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
これは、一意の「ポーズ」のリストには最適ですが、同じオブジェクトとの関係を2回持つことはできないため、次のようなシーケンスを作成することはできません。
PoseA -> PoseB -> PoseC -> PoseA -> PoseD
他の人はこれをどのように扱っていますか?シーケンス内の選択されたポーズの存在をチェックする動的エンティティを作成することを考えていました。存在する場合は、そのポーズを複製して、「2回参照」できるようにします。どちらも同じ情報が含まれますが、インデックスは異なります。これで問題が解決すると思います。動的エンティティとコードを追加するだけで、重複を検証し、シーケンスが削除されたときにエンティティをクリーンアップできます。
誰かもっと良いアイデアがありますか?