按对象的属性对NSMutableArray进行排序

时间:2011-08-09 19:11:04

标签: iphone sorting nsmutablearray nsdate

因此,对于对NSMutableArray个自定义对象进行排序的最佳方法,这是一个相当基本的问题。

我有一个NSMutableArray个自定义对象,每个对象都有一个NSStringNSDate。我需要按最新的对象(最新的NSDate)对数组进行排序,如果这是一个只有NSDate compare: NSDate的数组,我很确定我可以简单地使用NSDate,但是我需要对所有对象进行排序,而不仅仅是日期,我不确定是否可以使用该方法。

就伪代码而言,我需要:查看单个对象,确定当前对象的NSDate是否是数组中的下一个最大对象,如果是,则移动对象,而不仅仅是日期

同样,这是我甚至犹豫不决的问题,因为它是如此基本但我不想写一些非常低效的方法,如果有一个预先存在的类方法基本上可以做我想要的,搜索一个对象的子属性数组,并根据子属性对对象进行排序。

感谢您的帮助。

2 个答案:

答案 0 :(得分:86)

NSSortDescriptors让这很简单。使用NSMutableArray,您可以使用sortUsingDescriptors:对现有数组进行排序,使用不可变数组,您可以使用sortedArrayUsingDescriptors:

创建新数组
//This will sort by stringProperty ascending, then dateProperty ascending
[mutable_array sortUsingDescriptors:
 @[
  [NSSortDescriptor sortDescriptorWithKey:@"stringProperty" ascending:YES],
  [NSSortDescriptor sortDescriptorWithKey:@"dateProperty" ascending:YES]
  ]];

答案 1 :(得分:19)

这个小片段对我很有用:

[students sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]];