核心数据以一对多关系排序
Posted
技术标签:
【中文标题】核心数据以一对多关系排序【英文标题】:Core Data sorting in one to many relationship 【发布时间】:2010-10-05 19:30:50 【问题描述】:我已经设置了一个数据模型,其中学生实体的名称与主题是一对多的关系。他参加的每个科目都有多个上课时间。
下面的代码根据学生姓名对其进行排序,这很简单。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
我想做的是对其进行排序,以便在每个学生需要参加的下一堂课时对其进行排序。所以显示将是学生,并按下一节课的时间排序。有什么想法吗?
我尝试了以下方法
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Student" inManagedObjectContext:managedObjectContext]];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(subjects.time > %@)", [NSDate date]]];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"time" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
我收到错误“'此处不允许多对多键'”,然后我尝试了 setRelationshipKeyPathsForPrefetching: 但这并没有获取主题的多对多关系。有什么想法吗?
【问题讨论】:
【参考方案1】:这是过程:
试试这个。取学生。然后,对于每个学生,从 Class 中获取“时间”,对于 Student(以谓词格式)“大于或等于当前时间”,按“时间”排序。显示详细信息。如果你把它放在一个循环中,你就有答案了。
【讨论】:
'time' 是 Class 的一个属性。所以流程应该是这样的,从学生那里获取“名字”。从该学生的班级中获取所有“时间”。对“时间”进行排序以找到下一个上课时间(从现在开始)。然后根据下一节课时间对所有学生进行排序。 我正在努力让代码正常工作,因此问题是,有人可以帮助我吗? 试试这个。取学生。然后,对于每个学生,从 Class 中获取“时间”,对于 Student(以谓词格式)“大于或等于当前时间”,按“时间”排序。显示详细信息。如果你把它放在一个循环中,你就有答案了。 你有一些代码来告诉我这应该如何工作。我正在努力让第二次获取工作。 我必须编写代码。不是我现在有时间做的事情。如果您将项目以 zip 文件的形式发布到可下载的网站上,我会看一看,或者给我发电子邮件。以上是关于核心数据以一对多关系排序的主要内容,如果未能解决你的问题,请参考以下文章