如何排序NSMutable数组

时间:2016-02-08 06:29:39

标签: ios objective-c sorting

我有NSMutableArray包含像这样的对象 [1,10,100,101,32A,32B,75,76,77,GAOTHAN],我想按升序对此数组进行排序。 我正在使用下面的代码,但它不起作用,因为我的数组中没有任何键。如果有人有解决方案,请告诉我。

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" 
                                                           ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject:descriptor];
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];

2 个答案:

答案 0 :(得分:0)

我明白了

-(void)sortArray
{
      NSMutableArray *unsortedArray = [NSMutableArray arrayWithObjects:@"1",@"10",@"100",@"32A",@"32B",@"GAOTHAN", nil];
    NSArray *sortedArray = [unsortedArray sortedArrayUsingComparator:^(id firstObject, id secondObject)
                            {
        return [((NSString *)firstObject) compare:((NSString *)secondObject) options:NSNumericSearch]; }];
    NSLog(@"Array is ::%@",sortedArray);
}

答案 1 :(得分:-1)

您需要添加比较方法

- (NSComparisonResult)compare:(NSString *)otherObject {
    return [self compare:otherObject];
}

使用以下代码调用此方法,该代码返回已排序的数组。

NSMutableArray * arrayToFilter = [NSMutableArray arrayWithObjects:@"1",@"10",@"100",@"101",@"32A",@"32B",@"75",@"76",@"77",@"GAOTHAN",nil];

NSArray *sortedArray = [arrayToFilter sortedArrayUsingSelector:@selector(compare:)];

您可以编写自己的逻辑来比较数组的两个对象。