5

這一次我得到一個NSFetchedResultsController奇怪的行爲。我創建了一個fetchRequest這樣的:NSFetchedResultsController和Relationship

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entdesc = [NSEntityDescription entityForName:@"Exam" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entdesc]; 
NSPredicate *predi = [NSPredicate predicateWithFormat:@"student == %@", self.student]; 
[fetchRequest setPredicate:predi]; 

如果我的NSManagedObjectContext的executeFetchRequest:error:執行它,我得到預期的結果。根據學生的所有考試。 (在學生和考試之間是一對多的關係) 但是,如果我在NSFetchedResultsController中使用相同的fetchRequest,我會得到不同的結果。直到現在我還沒有出去,我究竟得到了什麼。在我眼中,結果是隨機的。

你能幫我嗎?我想用NSFetchedResultsController來管理給定學生的考試。

桑德羅·邁耶

+0

'[NSPredicate predicateWithFormat:@「student ==%@」,self.exam]'。這裏是'self.exam'一個學生嗎? – albertamg

+0

對不起我的錯。當然,它必須是一名學生。 ;-) –

回答

1

如果你有一個Student對象已經在手,你不必獲取Exam對象,你剛剛問Student對象其exams關係的內容。不需要獲取,因爲您已經有了所需的所有對象的參考。至於爲什麼fetch在取結果控制器之外工作,我不能肯定地說。控制器什麼都不做,只是取得一個提取的結果並將它們打包在一個tableview中顯示。如果數據在tableview中沒有正確顯示,那麼問題很可能發生在您將fetched results控制器的內容連接到tableview的tableview委託/數據源方法中。

+0

謝謝你的回答。我也想過這個。但NSFetchedResultsController爲我做了所有的處理。如果我沒有找到其他解決方案,我會這樣做。 ;-) –

+0

這裏是同樣的問題。使用fetchcontroller爲您的表創建所有部分非常方便。 這裏最好的做法是什麼? – obiwahn