我正在尝试按降序对数组进行排序,我可以按升序对数组进行排序,这是我的代码按升序排序,
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"year" ascending:NO];
NSArray * descriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
sortedArray = [array sortedArrayUsingDescriptors:descriptors];
dictionaryWithSortedYears = [[NSMutableDictionary alloc] init];
NSString *tempDateKey = nil;
for (TreeXmlDetails *list in sortedArray)
{
id obj = [dictionaryWithSortedYears objectForKey:list.year];
if(!obj)
{
if(tempDateKey == nil)
{
arrayFromList = [[NSMutableArray alloc] init];
tempDateKey = list.year;
}
}
if([list.year isEqualToString:tempDateKey])
[arrayFromList addObject:list];
else
{
[dictionaryWithSortedYears setObject:arrayFromList forKey:tempDateKey];
tempDateKey = nil;
arrayFromList = nil;
arrayFromList = [[NSMutableArray alloc] init];
tempDateKey = list.year;
[arrayFromList addObject:list];
}
}
[dictionaryWithSortedYears setObject:arrayFromList forKey:tempDateKey];
NSArray *arr = [dictionaryWithSortedYears allKeys];
sortedKeys = [[NSArray alloc] initWithArray:[arr sortedArrayUsingSelector:@selector(compare:)]];
但是,我想以降序数组排序数组,请帮助我。 谢谢你。
答案 0 :(得分:0)
使用以下内容:
[yourArrayToBeSorted sortUsingComparator:^NSComparisonResult(id obj1, id obj2){
return [(NSDate *)obj2 compare:(NSDate *)obj1];} ];
答案 1 :(得分:0)
来自文档:
NSSortDescriptor的实例描述了订购对象的基础 通过指定用于比较对象的属性,该方法 用于比较属性,以及是否应该进行比较 上升或下降。 NSSortDescriptor的实例是不可变的。
通过指定密钥来构造NSSortDescriptor的实例 要比较的属性的路径,排序的顺序(升序 或者降序),以及(可选)用于执行的选择器 比较。
构造函数: 的 initWithKey:升序:强>
返回使用给定属性初始化的NSSortDescriptor对象 键路径和排序顺序,以及默认比较选择器。 - (id)initWithKey:(NSString *)keyPath ascending:(BOOL)ascending
指定顺序的参数:
如果接收者按升序指定排序,则升序为YES, 否则没有。
这些苹果文档会一步一步地指导您如何对数组进行排序: