所以我有以下代码,用“color”属性对核心数据进行排序。
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:YES];
sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
有没有办法获取该类型的结果,现在按日期(另一个属性)在每个颜色“组”中进行子排序?
基本上这是我现在得到的一个例子......
RED - 11/1/2010
RED - 9/8/2010
RED - 11/9/2011
RED - 10/20/2011
GREEN - 11/1/2010
GREEN - 9/8/2010
GREEN - 11/9/2011
BLUE - 10/20/2011
BLUE - 11/1/2010
BLUE - 9/8/2010
以下是我希望结果看起来......
RED - 9/8/2010
RED - 11/1/2010
RED - 10/20/2011
RED - 11/9/2011
GREEN - 9/8/2010
GREEN - 11/1/2010
GREEN - 11/9/2011
BLUE - 9/8/2010
BLUE - 11/1/2010
BLUE - 10/20/2011
我确信这可以做到,但我不确定如何实现。
答案 0 :(得分:10)
调用SetSortDescriptors时,请传递要排序的所有NSSortDescriptors的数组。在您的示例中,您只创建了一个排序描述符,并且只将其添加到排序描述符数组中。为日期字段创建第二个NSSortDescriptor,并将其添加到排序描述符数组中。它们按照数组中的顺序应用于数据集。请参阅下面的Apple文档说明。
这样的事情应该有效:
NSSortDescriptor *colorSort = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:asc selector:nil];
NSSortDescriptor *dateSort = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:asc selector:nil];
NSArray *sortDescriptors = [NSArray arrayWithObjects:colorSort, dateSort, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
设置接收器的排序描述符数组。 - (void)setSortDescriptors:(NSArray *)sortDescriptors
sortDescriptors - 排序描述符指定在发出获取请求时返回的对象应该如何排序 - 例如按姓氏,然后按名字。排序描述符按它们在sortDescriptors数组中出现的顺序应用(按最低数组索引排序顺序串行)。