我本来想给数组降序排序,调用了compare方法,可为啥跳进去的时候竟然是一个结构体?    NSArray *arr = @[@2134, @123, @111, @324, @414];
    arr = [arr sortedArrayUsingSelector:@selector(compare:)];
    NSEnumerator *enumerator = [arr reverseObjectEnumerator];
    NSArray *arr1 = [[NSArray alloc] initWithArray:[enumerator allObjects]];
    NSLog(@"%@", arr1);而且这个地方为啥还需要使用枚举器?

解决方案 »

  1.   


    NSArray *arr = @[@2134, @123, @111, @324, @414];
    arr = [arr sortedArrayUsingSelector:@selector(compare:)];  // 默认为升序
    NSEnumerator *enumerator = [arr reverseObjectEnumerator]; // 创建enumerator,将排序好的arr逆序
    NSArray *arr1 = [[NSArray alloc] initWithArray:[enumerator allObjects]]; // 取出排序好的结果
    如果你想一步到位,可以使用- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator NS_NOESCAPE)cmptr API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));
    可以自定义排序的条件及升降// 数组降序
    [arr sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        NSNumber *tNumber1 = (NSNumber *)obj1;
        NSNumber *tNumber2 = (NSNumber *)obj2;
        if (tNumber1.intValue < tNumber2.intValue) { // 交换
            return NSOrderedDescending;
        } else {
            return NSOrderedAscending;  // 不交换
        }
    }]