NSMutableDictionary 是否总是按字母顺序对键进行排序?

Is NSMutableDictonary always sorting the keys in alphabetical order?

我创建了一个NSMutableDictonary

问题是我将所有键按字母顺序排序。为什么会这样?

我今天才注意到这一点(以前从未检查过)。这是 NSMutableDictonary 的实际实现吗?有什么方法可以按照我声明的顺序获得 key/values 吗?

下面是截图中的代码:

- (IBAction)OnBtnSubmit:(id)sender {
    NSString *strUid=[[NSUserDefaults standardUserDefaults] objectForKey:@"UID"];
    NSString *picData=[self imageToNSString:ProfileImage.image];
    NSString *strComment=_commentTxt.text;
    NSString *strUnit=_unitTxt.text;

    NSMutableDictionary *parameters =[NSMutableDictionary dictionaryWithObjectsAndKeys:strUid,@"uid",strComment,@"comment",strUnit,@"unit_donate",@"hi",@"image",nil];

    NSLog(@"parameters : %@",parameters);

我担心的是,我可以按照我申报的顺序拿到key/values吗?

如下所示:

  NSMutableDictionary *parameters =[NSMutableDictionary dictionaryWithObjectsAndKeys:strUid,@"uid",strComment,@"comment",strUnit,@"unit_donate",@"hi",@"image",nil];

 {
  uid = 85;
  comment= test;
  unit_donate = 1;
  image=hi;
 }

我需要这个确切的顺序,因为在 Web 端有一个数组存储所有这些键的值。我需要确保 image 始终处于第 4 个位置。

但我很想知道,我已经记录了我创建的词典;为什么它按字母顺序显示?这是我字典的实际顺序还是有其他原因?

是的,会是这样的。但是无论顺序是什么,它都不应该关心你的逻辑,因为你总是要根据键而不是基于顺序来获取值。

我很确定字典不会跟踪输入顺序。您如何输出字典、循环键或只打印字典?

如果您知道要检索对象的顺序,则可以创建自己版本的键数组并循环遍历它,以按照您想要的顺序从字典中提取对象

有关更多详细信息,请查看 dictionary works