【问题标题】:How to Sort NSMutable Array如何对 NSMutableArray 进行排序
【发布时间】:2016-05-17 18:11:52
【问题描述】:

我有 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];

【问题讨论】:

标签: ios objective-c sorting


【解决方案1】:

我明白了

-(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);
}

【讨论】:

    【解决方案2】:

    你需要添加比较方法

    - (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:)];
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多