2011-09-15 5 views
0

다 대상 관계가 2 인 오브젝트가 두 개 있습니다. 내가 얻을 수있는 방법CoreData : 다 대 다 관계

+ (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; 
} 

모두 선택 Member에서 Activities :

enter image description here

여기 내 코드입니까? 어떻게 그 요청을 할 수 있습니까?

당신은 아마 이미 의심으로

답변

1

, 뭔가 당신의 조건에 문제가 있습니다 :

은 아마 당신 때문에 당신이 당신의 관계를 명명하는 방식 혼란이다. 이름은 개념적으로 약간의 우iness함이 있음을 나타냅니다. 엔티티와 관계의 이름을 다음과 같이 바꾸는 것이 좋습니다.

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

더 나은 해결책이 있습니다. 액티비티 액티비티에는 이미 원하는 액티비티가 정확하게 포함되어 있지 않습니까? 따라서 :

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

감사합니다. 첫 번째 제안은 좋습니다. 나는 CD에 초보자입니다. 두 번째 설명이 정확합니다. 가져올 필요가 없습니다. 감사합니다. RL –