我有这本词典。我想在不同的数组中获取值和键,以及在字典中显示的顺序,即索引= 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);
答案 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"]);
希望有所帮助