如何通过NSDates和NSStrings重新排序数组

Bla*_*end 1 cocoa objective-c nsdate

我有一个数组,其中包含一个名为'Game'的自定义类.每个'游戏'都包含一个NSDate.我想根据日期重新排序我的数组,以便它们按照从最新到最旧的顺序排列.我怎么能这样做?另外,我的班级'Game'包含一个NSString.我怎么能重新排序我的数组,以便游戏按字母顺序排列?

Dav*_*ong 8

有一个真正简单的方法来做到这一点,那就是有NSSortDescriptor:

NSArray *games = ...; //your unsorted array of Game objects
NSSortDescriptor *sortByDateDescending = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject:sortByDateDescending];

NSArray *sortedGames = [games sortedArrayUsingDescriptors:descriptors];
Run Code Online (Sandbox Code Playgroud)

Apple已经编写了排序代码.它只需要知道要排序属性.这就是NSSortDescriptor封装的内容.一旦你有一个,只需将它提供给数组,然后数组返回一个排序版本.(或者,如果你有NSMutableArray,你可以使用它进行就地排序-sortUsingDescriptors:)