Ios 核心数据-NSFetchedResultController按其他表排序数据字段

Ios 核心数据-NSFetchedResultController按其他表排序数据字段,ios,core-data,nsfetchedresultscontroller,nsfetchrequest,nssortdescriptor,Ios,Core Data,Nsfetchedresultscontroller,Nsfetchrequest,Nssortdescriptor,我有两个相互关联的表——主表和明细表(一个主表-多个明细表) 我想显示详细信息表中的记录列表,按主表中的“日期”字段排序 如何在下面的代码中操作NSSortDescriptor?对我的问题有什么建议吗 代码: 现在,我想用“日期”字段对数据进行排序,这是Master表的列名。首先需要设置Master表和detail表之间的关系 然后,您将能够在下一步中使用排序描述中的其他表格。。关系名称不能是集合(在一个主-多个详细信息关系中,只有在为详细信息表创建排序描述符时,才能使用此字段) 您的排序描述如

我有两个相互关联的表——主表和明细表(一个主表-多个明细表)

我想显示
详细信息
表中的记录列表,按
主表
中的“日期”字段排序

如何在下面的代码中操作
NSSortDescriptor
?对我的问题有什么建议吗

代码:


现在,我想用“日期”字段对数据进行排序,这是
Master
表的列名。

首先需要设置Master表和detail表之间的关系

然后,您将能够在下一步中使用排序描述中的其他表格。。关系名称不能是集合(在一个主-多个详细信息关系中,只有在为详细信息表创建排序描述符时,才能使用此字段)

您的排序描述如下所示:

NSSortDescriptor *sd = [[NSSortDescriptor alloc]
                                       initWithKey:@"master.date"
                                         ascending:YES];

我认为您在详细信息表中缺少对Master的引用 i、 e

这将把每个细节连接到一个且唯一的主节点。因此,现在您可以实际获取按日期排序的详细信息:

NSFetchRequest *fr = [[NSFetchRequest alloc] init];
NSEntityDescription *e = [NSEntityDescription entityForName:@"Details"
                                     inManagedObjectContext:context];
[fr setEntity:e];

NSSortDescriptor *sd = [[NSSortDescriptor alloc]
                                       initWithKey:@ "master.date"
                                         ascending:YES];
享受

@interface Details : NSManagedObject

@property (nonatomic, retain) NSString * x;
@property (nonatomic, retain) NSString * y;
@property (nonatomic, retain) Master *master;

@end
NSFetchRequest *fr = [[NSFetchRequest alloc] init];
NSEntityDescription *e = [NSEntityDescription entityForName:@"Details"
                                     inManagedObjectContext:context];
[fr setEntity:e];

NSSortDescriptor *sd = [[NSSortDescriptor alloc]
                                       initWithKey:@ "master.date"
                                         ascending:YES];