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

时间:2015-04-03 05:14:37

标签: objective-c nsmutabledictionary

我创建了一个NSMutableDictonary

Screenshot

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

我今天刚刚注意到这一点(之前从未检查过)。这是NSMutableDictonary的实际实施吗?有什么方法可以按照我声明的顺序获取键/值吗?

以下是截图中的代码:

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

我担心的是,我可以按照我声明的顺序获取键/值吗?

如下所示:

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

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

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

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

2 个答案:

答案 0 :(得分:2)

是的,就是这样。但无论顺序是什么,它都不应该与你的逻辑有关,因为你总是要在密钥上获取值而不是基于顺序。

答案 1 :(得分:0)

我很确定词典没有跟踪输入顺序。你如何输出字典,循环键或只打印字典?

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

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

的方式