「Photo」實體(anAlbum.photos是關係)包含 資產網址。我對顯示沒有任何問題,它更像是關於如何使用NSSet(核心數據關係)與 NSFectchedResultsController - 或直接與視圖 (集合/表格)關聯的 。
首先,我會用這個NSFetchedResultsController
。該組件與表結合使用,並允許以延遲加載的方式加載數據。 其次,我將使用的提取請求應針對Photo
實體運行,而不是針對Album
運行。換句話說,您應該選擇屬於特定專輯的所有照片。
這裏的代碼,我會用...
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Photo" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"album == %@", anAlbum];
[request setPredicate:predicate];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"takeAt" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
return _fetchedResultsController;
}
所以現在你tableView:cellForRowAtIndexPath:
你可以使用
Photo *photo = [_fetchedResultsController objectAtIndexPath:indexPath];
// access the album the photo belongs to
Album* album = photo.album;
您可以在Core Data Tutorial for iOS: How To Use NSFetchedResultsController把握NSFetchedResultsController
的主要概念。
你想展示什麼?照片或相冊? –
「照片」實體(anAlbum.photos是關係)包含資產網址。我對顯示沒有任何問題,我更關心如何使用NSFectchedResultsController的NSSet(核心數據關係) - 或直接使用視圖(collection/table)。 – chrisp