我有2個包含UITableView的視圖。它們在iPad上同時顯示,並排顯示。如何使用NSFetchedResultsController基於實體關係提取結果?
我對所有數據都使用核心數據。這兩個表都需要編輯(行添加,刪除等),所以我想在每個視圖中使用NSFetchedResultsController來爲我處理所有這些。
第二個表的內容取決於第一個表中選擇的內容。所以,當選擇第一個表中的一個項目時,該對象被傳遞給第二個表的視圖(所以我已經有權訪問應該進入第二個表的數據),但是我想嘗試使用如果可能,所有內置的NSFRC處理。
該模式沿線:大學(uniID,uniName,學生)和學生(stuID,stuName,大學)。所以關係是:大學< - >>學生。
我使用的NSFRC下面的代碼,但它返回0結果:
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
NSManagedObjectContext *context = appDelegate.managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"stuName" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"university == %@",self.selectedUniversity];
[fetchRequest setPredicate:predicate];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
fetchedResultsController.delegate = self;
[sort release];
[fetchRequest release];
[theFetchedResultsController release];
return fetchedResultsController;
}
我將不勝感激,如果有人至少可以點我在正確的方向。 ..
謝謝阿什利。是的,我正在執行提取操作,但在numberOfRowsInSection中返回的行數是0. –
可以記錄fetchRequest以確認它是否包含您期望的內容(並在此處發佈?) –
提取請求顯示搜索項是零。 (NSFetchRequest:0x5a52dd0>(entity:Student; predicate:(university == nil); sortDescriptors :(( 「(stuName,ascending,compare :)」 )); batch size:20; type:NSManagedObjectResultType;)。 NSFRC創建時,大學是零。我如何獲得這個更新以使用選定的大學? –