我有一个NSString对象数组,必须按降序对其进行排序。

由于我没有找到任何API以降序对数组进行排序,因此我采用了以下方法。

我在下面列出了NSString的类别。

- (NSComparisonResult)CompareDescending:(NSString *)aString
{

    NSComparisonResult returnResult = NSOrderedSame;

    returnResult = [self compare:aString];

    if(NSOrderedAscending == returnResult)
        returnResult = NSOrderedDescending;
    else if(NSOrderedDescending == returnResult)
        returnResult = NSOrderedAscending;

    return returnResult;
}

然后我使用语句对数组进行了排序
NSArray *sortedArray = [inFileTypes sortedArrayUsingSelector:@selector(CompareDescending:)];

这是正确的解决方案吗?有更好的解决方案吗?

最佳答案

您可以使用NSSortDescriptor:

NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO selector:@selector(localizedCompare:)];
NSArray* sortedArray = [inFileTypes sortedArrayUsingDescriptors:@[sortDescriptor]];

在这里,我们使用localizedCompare:比较字符串,并将NO传递给ascending:选项以降序排列。

10-08 01:01