多対多の関係を使用します。フェッチ要求の間、それはより簡単で簡単です。以下のスクリーンショットを参照してください。右側のRelationship managerに注意を払い、NoteToObjectから "To-Many Relationship"をタグに設定します。 Playerエンティティを無視します。
ああ、 "削除ルール"に注意してください。特定のNoteObjectに関連付けられているすべてのタグを削除することができます。その場合は、カスケードに設定します。
NoteObjectエンティティ
タグエンティティ
--edit:
あなたが最初にあなたのNoteObjectを取得する必要がある複数のタグを追加するには - 私はあなたのIDパラメータのいくつかの並べ替えがあるだろうと仮定NoteObjectを区別するために使用します。 CoreDataは自動的にタグの追加/削除メソッドを生成します。次のようなコードを使用する必要があります。
- (void)addTags:(NSArray *)tags toNoteObjectWithID:(NSString *)noteID {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"NoteObject"];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"noteID == %@", noteID];
[fetchRequest setPredicate:pred];
NoteObject *noteObject = [[[self managedObjectContext] executeFetchRequest:fetchRequest error:nil] lastObject];
for (NSString *tag in tags) {
Tag *t = [NSEntityDescription insertNewObjectForEntityForName:@"Tag"
inManagedObjectContext:[self managedObjectContext]];
t.body = tag;
t.noteObject = noteObject;
[noteObject addTagsObject:t];
}
[self saveContext];
}
CoreDataが正しいアプローチですか?データが十分に小さい場合はNSCodingを見ましたか?大規模なデータセットを持っている場合は@Eugeneの回答に従ってください:) – deanWombourne