Используйте для многих отношений. Потому что это намного проще и проще во время запросов на выборку. Смотрите скриншоты ниже. Обратите внимание на менеджера отношений с правой стороны, установите «To-Many Relationship» из вашего объекта NoteObject в теги. Игнорируйте объект Player.
О, и обратите внимание на «Удалить правило». Вы можете удалить все теги, связанные с данным объектом NoteObject. Тогда установите его в Cascade.
NoteObject объект
Tag объект
--edit:
Чтобы добавить несколько тегов, нужно сначала принести свой NoteObject - Я полагаю, что будет какой-то параметр ID, который вам Используется для отличия NoteObjects. 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