2011-09-15 23 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; 
} 

私が選択したMemberからすべてのActivitiesを取得できますか?どのように私はそれを与えることを要求を構築することができますか?

答えて

1

あなたはおそらくすでに疑われるとして、何かがあなたの述語が間違っている:

おそらく、あなたはので、あなたがあなたの関係を命名方法で混乱しています。名前は、概念的な濁りがあることを示しているようです。あなたのエンティティと関係の名前を次のように変更することをお勧めします:

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

もっと良い解決策があります。アトリビュートアクティビティには、すでに必要なアクティビティが含まれていませんか?従って:

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

ありがとう。最初の提案は良いです。私はCD初心者です。 2番目のコメントは正しいです。フェッチする必要はありません。 ありがとう、 RL –