2016-05-12 2 views
0

Быстрое отношение данных к источнику данных «многие ко многим», как вы сохраняете отношения.Быстрое отношение данных ядра ко многим отношениям

позволяет предположить, есть 2 сущности события и члены, событие может иметь много членов, связанные с и членом может иметь много событий ...

так

< < Event - >> Член

отношения

событий - Event - члены члены - члены - события

как бы вы могли сохранить такие отношения?

ответ

1

Вы не должен любой код, чтобы установить связь между сущностями событиями и приятелем членов :)

Вы можете открыть модель данных ядра, выберите объект Event, удерживая контроль и перетащите курсор мыши на членах объекта:) отношения будут установлены сразу :)

Теперь выберите отношения изменить его на многие ко многим из обоих Event Члену (многие-ко-многим-отношения) и член Событие (обратная связь) :)

Теперь назовите эти отношения как для объекта Event, так и для объекта-члена соответствующим образом :)

Как многие ко многим в случае быть названы involves_Members и же отношения в сущности-членов будет называться involvedin_Events :)

Теперь, когда вы генерировать классы модели для обеих организаций вы найдете

Events.h 

имеет свойство с именем involves_Members, которые будут типа NSSet

и аналогично

`Members.h` 

имеет свойство с именем involvedin_Events, которые будут типа NSSet а :)

Предположим теперь, если вы хотите добавить элемент к событиям все, что вам нужно сделать, будет

создать объект как члены

[context performBlock:^{ 

    Member *member = (Member *)[NSEntityDescription insertNewObjectForEntityForName:@"Member" inManagedObjectContext:context]; 
    [member setValue:@"yourValue" forKey:@"yourkey"]; 
    //after populating it with appropriate value set the relationship with event :) 
    //get the event to which you want to set the relationship with member using NSFetchRequest :) 

    //assuming you have event object with you 
    NSMutableSet *involvedMembers = [event mutableSetValueForKey:@"involves_Members"]; 
    [involvedMembers addObject:member]; 

    [event setValue:involvedMembers forKey:@"involves_Members"]; 

    //thats it you are done now 
    //save the context now :) 
    NSError *error; 
    [context save:&error]; 
}]; 

и когда вы хотите получить доступ ко всем членам, участвующих в и событие все, что вам нужно сделать, это получить объект события с помощью NSFecthRequest :) и когда у вас есть объект события, вы можете получить доступ ко всем своим членам с помощью ,

NSArray *membersArray = [event.involves_Members allObjects]; 

ИЛИ

NSArray *membersArray = [event valueForKey:@"involves_Members"]; 

Вот так :) То же самое применимо для членов enity а :)

TIP

Вы не хотите, чтобы операцию удаления беспорядок с вашими основными данными :) Итак, выберите оба отношения: involves_Members и involvedin_Events a d установить правило удаления для аннулирует

Надежда Я сделал мой пункт ясно :) Happy дружище кодирования :)

+0

Спасибо за ваш ясный ответ. У вас есть быстрая версия? – kupilot

+0

@kupilot: Извините, приятель не имеет imac со мной, теперь попробует предоставить вам код завтра :) Но конвертировать это в swift не должно быть проблемой :) Вот ссылка, я думаю, вы могли бы ее увидеть :) Если нет, пожалуйста, посмотрите на него :) https://www.raywenderlich.com/14742/core-data-on-ios-5-tutorial-how-to-work-with-relations-and-predicates Все, что я упоминал, очень четко объяснено и его в быстрой :) Надеюсь, это поможет вам :) –

Смежные вопросы