我已经对多个类似的问题和网站进行了一些阅读,我对此无法理解。
我有一个NSFetchedResultsController,它显示来自用户的信息,该信息将信息添加到带有文本字段的ModalViewController中。向用户呈现ModalView,他们在字段中添加一些单词,单击“保存”,组成TableView中单个分段的表行,实现NSFetchedResultsController协议。
我现在想做的是:
我的fetchrequest是:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"whoBy.name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
我想要显示的属性是occasion.date,这意味着它是从Transaction实体到Occasion Entity(场合)的关系,createdDate是Occasion实体上的属性。
我可以看到sectionNameKeyPath:nil需要更新,但是我应该更新它,还需要更改任何数据源方法,标题等吗?
对此的任何帮助都将受到大力赞赏。
谢谢,
答案 0 :(得分:2)
准确答案取决于应显示为部分标题的内容以及如何显示 部分应该排序。
但通常,您必须向实体添加属性,然后将其用作sectionNameKeyPath
参数。此外,您还必须添加第一个排序描述符
使用相同的键(这个条件可以略微放松)。
例如,如果您只是将字符串属性sectionName
添加到实体并使用
作为sectionNameKeyPath
和第一个排序描述符键,然后是所有对象
具有sectionName
的相同值将被分组为一个部分,
这些部分将按sectionName
排序。
剩余的
排序描述符用于对每个部分中的对象进行排序。
另一个例子是用字符串属性定义一个单独的实体“Section”
“title”和整数属性“index”,从中添加一对一的关系“section”
“交易”到“部分”,并使用section.index
作为sectionNameKeyPath
。
同样,具有相同部分的所有对象被组合在一起,但是部分是
现在按section.index
的值排序,您可以修改
tableView:titleForHeaderInSection:
以便标题显示在该部分中
标题而不是索引。
这很普遍,但我希望它能让你开始。