【发布时间】:2013-11-12 01:06:03
【问题描述】:
我正在开发一个应用程序,我想在其中显示一个充满学生项目的 UITableView。每个项目实体都有几个属性,如标题、描述等,并且还与其他实体(如学生、学习课程等)的关系相关联。 我现在要做的是,将学习课程用作部分,其中包含该学习课程的学生所做的所有相应项目。
到目前为止,我的代码如下所示
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:Nil
cacheName:Nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
return _fetchedResultsController;
}
这是CoreData模型的截图。
我真的是 Obj-C 的新手,而且我自己还没有设计数据模型,所以我有点迷路了,很高兴能得到任何帮助。
【问题讨论】:
-
我不是 Core Data 的大师,但 sectionNameKeyPath: 将是 Project 的一个属性(或关系),每个部分都是一门学习课程。看起来您有一个名为“projectToStudyCourse”的关系,因此您可以将 sectionKeyPath: 设置为 @"projecttostudycourse.title",其中 title 是学习课程标题的属性名称。当然,将部分标题设置为学习课程标题。此外,您需要将 sortDescriptor 更改为 @"projecttostudycourse.title"。
标签: objective-c uitableview core-data nsfetchedresultscontroller