因此,对于对NSMutableArray
个自定义对象进行排序的最佳方法,这是一个相当基本的问题。
我有一个NSMutableArray
个自定义对象,每个对象都有一个NSString
和NSDate
。我需要按最新的对象(最新的NSDate
)对数组进行排序,如果这是一个只有NSDate compare: NSDate
的数组,我很确定我可以简单地使用NSDate
,但是我需要对所有对象进行排序,而不仅仅是日期,我不确定是否可以使用该方法。
就伪代码而言,我需要:查看单个对象,确定当前对象的NSDate
是否是数组中的下一个最大对象,如果是,则移动对象,而不仅仅是日期
同样,这是我甚至犹豫不决的问题,因为它是如此基本但我不想写一些非常低效的方法,如果有一个预先存在的类方法基本上可以做我想要的,搜索一个对象的子属性数组,并根据子属性对对象进行排序。
感谢您的帮助。
答案 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]]];