-2

在我的应用程序中,我从用户那里获取输入并将其存储NSMutableDictionary并成功获取结果。

但我对控制台上的输出打印有点困惑。它没有顺序

这个输出背后的原因是什么?

谢谢

在此处输入图像描述

我使用以下代码存储来自 textField 的输入并在控制台上打印它。

-(IBAction)doneButtonClicked:(id)sender
{
 NSArray *arr=[NSArray arrayWithObjects:@"firstName",@"middleName",@"lastName",@"address",@"email",@"phone",nil];

 DataClass *obj=[DataClass getInstance];  

 obj.personelInfo=[NSMutableDictionary dictionary];

 for (int a=1; a<=personelInfoCounter; a++) {


    UITextField *textField = (UITextField*)[self.view viewWithTag:a];




    NSString *fieldValue = textField.text;


    if(fieldValue != nil)
    {
    [obj.personelInfo setObject:fieldValue forKey:[arr objectAtIndex:a-1]];
    }
    else
    {
       [obj.personelInfo setObject:@"" forKey:[arr objectAtIndex:a-1]]; 
    }

}



NSLog(@"Final value of Personal Info Dictionary is ----------------------------------:");

for (id key in obj.personelInfo) {

    NSLog(@"%@      ,      %@", key, [obj.personelInfo objectForKey:key]);

}
}

控制台上的输出是

在此处输入图像描述

4

2 回答 2

1

这是不正常的。这个输出背后的原因是什么?

NSDictionary并且NSMutableDictionary不要维护您放入其中的东西的顺序。枚举字典时将获得什么顺序是未定义的。

于 2012-08-07T11:18:04.073 回答
0

正如沃特森所说的“字典未排序”。您可以根据您的关键值制定自己的逻辑。

更多信息https://developer.apple.com/library/mac/#documentation/cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html

于 2012-08-09T04:25:59.657 回答