2011-04-10 88 views
4

所以我有下面的代码,通过“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

Stephano,如果您觉得它不再有用,您可以删除您的问题(使用问题文本下方的“删除”链接)。 – 2011-04-10 03:32:43

回答

10

当你调用SetSortDescriptors时,通过一个你想排序的所有NSSortDescriptors的数组。在你的例子中,你只创建了一个排序描述符,并且只添加了一个排序描述符数组。为日期字段创建第二个NSSortDescriptor,并将其添加到您的排序描述符数组中。它们按照它们在数组中的顺序应用于数据集。从苹果文档中看到下面的描述。

像这样的东西应该工作:

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

请参见以下链接: https://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSFetchRequest_Class/NSFetchRequest.html

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSSortDescriptor_Class/Reference/Reference.html

把接收机的排序描述符的数组。 sortDescriptors - 排序描​​述符指定发出读取请求时返回的对象应如何排序 - 例如按姓氏,然后按名字排序。排序描述符按它们出现在sortDescriptors数组中的顺序进行应用(以最低数组 - 索引 - 第一顺序串行)。

+0

页面没有找到苹果文件,由好的答案... – AsifHabib 2014-01-30 07:25:00

+0

感谢您指出这@asifhabib。我更新了链接。 – mservidio 2014-01-30 18:37:56