【问题标题】:Sort within a sorted Core Data fetch result?在排序的核心数据获取结果中排序?
【发布时间】:2011-04-10 03:12:20
【问题描述】:

所以我有以下代码,通过“颜色”属性对核心数据获取进行排序。

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

我确信这可以做到,但我只是不知道如何做到这一点。

【问题讨论】:

  • Stephano,如果您认为问题不再有用,您可以删除您的问题(使用问题文本下方的“删除”链接)。

标签: iphone sorting core-data


【解决方案1】:

当您调用 SetSortDescriptors 时,传递一个包含您要排序的所有 NSSortDescriptor 的数组。在您的示例中,您只创建了一个排序描述符,并且只将一个添加到排序描述符数组中。为日期字段创建第二个 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

设置接收者的排序描述符数组。 - (void)setSortDescriptors:(NSArray *)sortDescriptors

sortDescriptors - 排序描​​述符指定发出获取请求时返回的对象应如何排序——例如按姓氏然后按名字。排序描述符按照它们在 sortDescriptors 数组中出现的顺序应用(以最低数组索引优先顺序)。

【讨论】:

  • 感谢@asifhabib 指出这一点。我已经更新了链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
相关资源
最近更新 更多