2014-02-11 49 views
0

爲了更好地理解我的問題,想象一下您的Facebook朋友;我有一個實體「用戶」,我用它來顯示朋友之間的關係;NSFetchController和coredata中的多對多

enter image description here

我不知道如何使用NSFetchRequest

我有兩個「一對多」的關係(見上文),以獲得具體用戶的朋友和我試圖讓使用NSPredicate的朋友,但在結束數組是空的。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = (NSEntityDescription *)[_dbManager userEntity]; 
[fetchRequest setEntity:entity]; 

User *userByUid = [_dbManager userByUid:_currentUid]; 

NSSortDescriptor *sort = [[NSSortDescriptor alloc] 
          initWithKey:@"sortId" ascending:YES]; 
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(friends IN %@)", userByUid]; 

[fetchRequest setPredicate:predicate]; 

[fetchRequest setFetchBatchSize:10]; 

NSArray *array = [_fetchedResultsController.managedObjectContext executeFetchRequest:fetchRequest error:nil]; 
+0

不能只需調用'userByUis.friends'?如果你想讓它們排序,你可以在'friends'屬性上使用'NSSet'' sortedArrayUsingDescriptors:'方法。 –

+0

感謝您的答案)我不能因爲我想使用NSFetchController將控制所有我的實體; –

回答

2

你必須使用的反比關係和 「ANY」:

[NSPredicate predicateWithFormat:@"ANY beFriendsWith == %@", userByUid]