我有以下核心数据结构:
Event <<-->> Team <<-->> Player
(所有关系都是多对多关系,Event>Team & Team>Player 是有序关系)。
伪代码...
self.event = an instance of Event that has been populated earlier on in the process.
linkedTeams = the relationship between Team & Player.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *thisEntry = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:self.doc.managedObjectContext];
[fetchRequest setEntity:thisEntry];
NSPredicate *fetchPredicate = [NSPredicate predicateWithFormat:@"ANY %@ IN linkedTeams", self.events.teams];
[fetchRequest setPredicate:predicate];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.doc.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
这将拉出 self.event.teams 中的所有玩家,谓词有效,但是,我想让玩家按 Team 和 Player 排序(通过使用有序关系),并分成几个部分(使用 Team 作为部分标题)。
如果直接从 Players 实体中提取,我如何根据 Ordered 关系对 Players 进行排序,似乎这对于 NSSortDescriptor 是不可能的?
我不能有“sectionNameKeyPath = linkedTeams.name”,因为linkedTeams 是一对多关系(即使在这种情况下它只会返回一个团队)。有什么方法可以使用 NSFetchedResultsController 执行此操作,还是我最好只是从我的属性 self.event 创建自己的数据源?
谢谢你的帮助!