首先,确保您的瞬态属性仅用于sectionNameKeyPath
创建获取的结果控制器时。最好命名它sectionIdentifier
(正如 Apple 在其示例代码中所做的那样。)实际日期应该是您实体的单独属性。(我会叫它dateAttribute
。
其次,确保在 Entity.m 文件中指定关键路径依赖项:
+ (NSSet *)keyPathsForValuesAffectingSectionIdentifier {
// If the value of dateAttribute changes, the section identifier may change as well.
return [NSSet setWithObject:@"dateAttribute"];
}
第三,确保在您的控制器中,您通过以下方式对托管对象上下文中的更改做出适当的反应
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
if (!self.tableView.editing) [self.tableView reloadData];
// the quick and dirty method without animations;
// see referenced code for a more pleasant approach
}
如果有任何不清楚的地方,请查看 Apple 示例DateSectionTitles。