2016-11-13 66 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; 
    } 
) 
相关问题