核心数据排序在一对多关系中

时间:2010-10-05 19:30:51

标签: iphone core-data nsfetchedresultscontroller nssortdescriptor

我已经设置了一个数据模型,其中学生实体的名称与主题有1对多的关系。他参加的每个科目都有很多班级时间。

下面的代码根据学生姓名对其进行排序,这是直截了当的。

    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];

我收到错误“'to-many key not here here'”,然后我尝试了setRelationshipKeyPathsForPrefetching:但是没有获取主题的to-many-relationship关系。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是一个过程:

试试这个。取得学生。然后,对于每个学生,从Class中获取“时间”,“大于或等于学生的当前时间”(以谓词格式),按“时间”排序。显示细节。如果你把它放在一个循环中,你有答案。