在nsarray中排序最长到最短的字符串

时间:2015-08-26 11:41:52

标签: ios sorting nsarray

我有一个NSArray我想按最长的字符串排序到最短的字符串

例如 -

 NSArray *strings=[NSArray arrayWithObjects:@"as12332", @"ol", @"st", @"br", @"gj", @"wr", @"qwos", nil];

我想要结果 -

  

@" as12332",@" qwos",@" ol",@" st",@" br&# 34;,@" gj",@" wr"。

按字符串长度排序。

1 个答案:

答案 0 :(得分:0)

您可以使用此代码来实现您尝试实现的目标:

NSArray *strings=[NSArray arrayWithObjects:@"as12332", @"ol", @"st", @"br", @"gj", @"wr", @"qwos", nil];
NSArray *sortedArray;
sortedArray = [strings sortedArrayUsingComparator:^NSComparisonResult(NSString *first, NSString *second)
{
    return [self compareLengthOf:first withLengthOf:second];
}];

sortedArray将包含按长度排序的元素。

比较方法的实施是:

    - (NSComparisonResult)compareLengthOf:(NSString *)firstStr withLengthOf:(NSString *)secondStr
{
    if ([firstStr length] > [secondStr length])
        return NSOrderedAscending;
    else if ([firstStr length] < [secondStr length])
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}

例如,如果您希望根据字母顺序进行二级排序,可以向comparisson方法添加更多逻辑。