我熟悉管理表行的NSFetchedResultsController的常见和基本用法,但我有一个有趣的问题。
我的数据是这样组织的:Schedule< --->>日< --->>路线。我目前有一个表视图,其中包含一个带有fetch控制器的Schedules,用于管理Schedules的创建和删除。我现在想为Routes / Days创建一个表视图。
我想在每一行列出一个路由,并创建与相关日内信息相对应的自定义部分标题。我可能通过获取所有路由,然后通过与相应日相反的关系将它们分开来一起破解某些东西,但我担心那时我将无法利用fetch控制器委托方法来更新表时管理对象改变。
有没有人有这方面的经验?关于如何前进的任何想法?
感谢。
答案 0 :(得分:2)
NSFetchedResultsController就是为此目的而设计的,因此您不必发明轮子。
初始化NSFetchedResultsController时,应考虑指定sectionNameKeyPath。该属性正是您为自动生成该部分所需的属性。
在你的情况下,我会这样做:
NSEntityDescription: @"Route"
NSPredicate: @"day = %@"
NSFetchedResultsController: sectionNameKeyPath:@"route.day"
你明白我的意思,如果你需要更多的代码来澄清,请告诉我。
答案 1 :(得分:0)
您需要通过为您创建的NSSet跟踪To Many关系,以表示数据库中的Route->> Day路径。假设您将您的关系命名为isTraversedOn,并且将day-> Schedule命名为isScheduled,则它将类似于:
Route *route=[self.fetchedResultsController.fetchedObjects objectAtIndex:0];
for (Day *day in route.isTraversedOn) {
Schedule *schedule = day.isScheduled;
NSLog(@"route is traversed on %@ according to schedule %@",day.name,schedule.name);
}
NSSet只保存指定对象的实际ID。