有一个带有一些NSRange值的数组:
@[[NSVale valueWithRange:{5,3}],[NSVale valueWithRange:{2,3}],[NSVale valueWithRange:{7,3}],[NSVale valueWithRange:{1,3}],....]
每个range都有一个不同的location,我希望该数组按range.location的反向顺序排序,有什么好的解决方法吗?

最佳答案

sortedArrayUsingComparator:是完成任务的最佳选择。

您的案例的代码是:

NSArray *array = @[[NSValue valueWithRange:NSMakeRange(5,3)],
                   [NSValue valueWithRange:NSMakeRange(2,3)],
                   [NSValue valueWithRange:NSMakeRange(7,3)],
                   [NSValue valueWithRange:NSMakeRange(1,3)]];

array = [array sortedArrayUsingComparator:^NSComparisonResult(NSValue *value1, NSValue *value2) {
        NSComparisonResult result = NSOrderedSame;
        if (value1.rangeValue.location > value2.rangeValue.location) {
            result = NSOrderedAscending;
        } else if (value1.rangeValue.location < value2.rangeValue.location) {
            result = NSOrderedDescending;
        }
        return result;
}];

关于ios - 对包含NSRange值的数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23297416/

10-14 20:49