2011-09-15 116 views
0

我有2個對象,有多對多的關係。CoreData:多對多關係

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

正如你可能已經懷疑,什麼是錯的與你的斷言:

也許你是因爲你命名你的人際關係的方式感到困惑。這些名字似乎表明有一些概念上的混亂。讓我建議你重命名你的實體和關係像這樣:

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

有一個更好的解決方案。屬性活動是否已經包含您想要的活動?於是:

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

謝謝。第一個建議是好的。我是CD新手。第二個評論是正確的。無需獲取。 謝謝, RL –