2016-11-13 1 views

답변

0

NSMutableDictionary (귀하의 경우 A, B, C)의 키 순서는 시스템에 의해 결정됩니다. 너는 그 일을 통제 할 수 없다.

하지만 목표를 달성하기 위해 NSMutableArray (변경할 수 없으므로 NSArray가 아니기 때문에)를 사용할 수 있습니다. 배열의 각 요소는 두 가지 키 - 값 쌍을 가진 별도의 NSDictionary가 될 것입니다. 즉, 키와 값을 더 간단하게 만드는 것입니다.

당신이 필요로하는 코드입니다 :

NSMutableArray *arrayOfDictionaries = [@[ 
             @{ @"key" : @"A", @"order" : @3 }, 
             @{ @"key" : @"B", @"order" : @1 }, 
             @{ @"key" : @"C", @"order" : @2 }, 
             ] mutableCopy]; 

[arrayOfDictionaries sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { 

    NSNumber *number1 = obj1[@"order"]; 
    NSNumber *number2 = obj2[@"order"]; 

    return [number1 compare:number2]; 
}]; 

NSLog(@"array = %@", arrayOfDictionaries); 

이 수정 된 배열과 같은 모양을 한 결과, 다음과 같습니다

array = (
     { 
     key = B; 
     order = 1; 
    }, 
     { 
     key = C; 
     order = 2; 
    }, 
     { 
     key = A; 
     order = 3; 
    } 
)