对数组

时间:2016-12-09 20:27:59

标签: objective-c

我有这本词典。我想在不同的数组中获取值和键,以及在字典中显示的顺序,即索引= 0键=名称,索引= 1键=密码,索引= 2键=地址。但问题是,当我打印数组时,它以不同的顺序意味着在索引= 0键=地址来代替名称。那么,如何对此进行排序?

NSDictionary *dictFields=@{
             @"name":@[_tfName.text],
             @"password":@[_tfPassword.text],
             @"address":@[_tfAddress.text]
            };

NSLog(@"%@",dictFields);

keysArr=[dictFields allKeys] ;
NSLog(@"%@",keysArr);
valuesArray=[dictFields allValues];
NSLog(@"%@",valuesArray);

NSLog(@"%@",dictFields);

2 个答案:

答案 0 :(得分:0)

问题是字典没有索引。只有数组才有索引。因此字典将保证您尊重键/值对,但您无法控制这些信息的存储方式。事实上,如果您将内容保存到文本文件,您可能会看到每次更改订单。

如果你真的想在词典中使用感觉像数字索引的东西,可以使用数字作为键(如果打算在for / next循环中使用它,则必须将其从字符串转换为数字)排序)。字典可以包含数组,因此每个键都可以指向数组作为值。

答案 1 :(得分:0)

轻松修复:使用数组保存您的密钥。

NSArray *keyArr = @[@"name",@"password",@"address",@"sex"];

NSArray *valueArr = @[@"nameValue",@"passwordValue",@"addressValue",@"sexValue"];

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjects:valueArr forKeys:keyArr];

//your keyArr index
NSInteger index = 0;

[dict setValue:@"newNameValue" forKey:[keyArr objectAtIndex:index]];

NSLog(@"%@",[dict objectForKey:@"name"]);

希望有所帮助