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;
}
)