一些排序问题(核心数据初学者)

时间:2010-08-27 02:13:25

标签: iphone objective-c sorting core-data nssortdescriptor

也许有一个简单的解决方案,但我对此感到头疼,我对所有这些核心数据都很新:

我有一个具有“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”属性对这些事务进行排序,这是否可以在同一个获取请求中进行?

非常感谢提前。

1 个答案:

答案 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是从实体TransactionBankAccount的关系。