也许有一个简单的解决方案,但我对此感到头疼,我对所有这些核心数据都很新:
我有一个具有“index”属性的BankAccount类/实体,用于排序,以及与Transaction类/实体的“事务”到多个关系。此Transaction实体具有“date”属性,我也想用它进行排序。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"BankAccount" inManagedObjectContext:self.managedObjectContext]];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
这很好用,并为我提供了很好地按“索引”排序的BankAccount对象。但是,每个BankAccount对象都包含一个NSSet“事务”,当然,它根本没有排序。如何通过“date”属性对这些事务进行排序,这是否可以在同一个获取请求中进行?
非常感谢提前。
答案 0 :(得分:1)
要执行此操作,您需要获取已订购的交易。
您需要的是:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Transaction"
inManagedObjectContext:self.managedObjectContext]];
[fetchRequest setPropertiesToFetch :[NSArray arrayWithObjects:@"date", @"bankAccount", nil]];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
[[[NSSortDescriptor alloc] initWithKey:@"date"
ascending:YES
selector:@selector(compare:)] autorelease],
[[[NSSortDescriptor alloc] initWithKey:@"bankAccount.index"
ascending:YES] autorelease],
nil]];
我假设Transaction
是交易实体的名称,bankAccount
是从实体Transaction
到BankAccount
的关系。