CoreData: отношение многих ко многим - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть 2 объекта со многими отношениями.

enter image description here

Вот мой код:

+ (NSSet *)activitiesSetForMember:(Members *)member inManagedObjectContext:(NSManagedObjectContext *)context{
NSSet *activitiesSet = nil;

NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"CompanyActivity" inManagedObjectContext:context];
request.predicate = [NSPredicate predicateWithFormat:@"hasMembers contains %@", member];
NSError *error = nil;
activitiesSet = [[context executeFetchRequest:request error:&error] lastObject];
[request release];

NSLog(@"count: %d", [activitiesSet count]);

//se o array vem vazio (nil), não existe a o tipo de Membro
if (!error && !activitiesSet)
    NSLog(@"Error: Member has no Activities related.");

return activitiesSet;   
}

Как мне получить все Activities из выбранного Member?Как я могу построить запрос, дайте мне это?

1 Ответ

1 голос
/ 16 сентября 2011

Как вы, вероятно, уже подозревали, что-то не так с вашим предикатом:

Возможно, вы запутались из-за того, как вы назвали свои отношения. Имена, кажется, указывают на то, что есть некоторая концептуальная грязь. Позвольте мне предложить вам переименовать ваши сущности и отношения следующим образом:

Members         - Member
CompanyActivity - Activity
memberActivity  - activities
hasMembers      - members

Есть лучшее решение. Разве в действиях атрибута уже нет нужных действий? Таким образом:

activitiesSet = member.activities; // according to my naming scheme
...