Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在数组中对NSDictionary键和值进行排序_Objective C - Fatal编程技术网

Objective c 在数组中对NSDictionary键和值进行排序

Objective c 在数组中对NSDictionary键和值进行排序,objective-c,Objective C,我有这本字典。我想在不同的数组中获取值和键,并按照字典中显示的顺序,即索引=0键=名称,索引=1键=密码,索引=2键=地址。但问题是,当我打印数组时,它的顺序是不同的,索引=0上的意思是key=Address是come而不是Name。那么,如何分类呢 NSDictionary *dictFields=@{ @"name":@[_tfName.text], @"password":@[_tfPassword.text],

我有这本字典。我想在不同的数组中获取值和键,并按照字典中显示的顺序,即索引=0键=名称,索引=1键=密码,索引=2键=地址。但问题是,当我打印数组时,它的顺序是不同的,索引=0上的意思是key=Address是come而不是Name。那么,如何分类呢

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

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


如果您真的想在字典中使用类似数字索引的内容,请使用数字作为键(如果您计划在for/next循环中使用数字进行排序,则必须将其从字符串转换为数字)。字典可以包含数组,因此每个键都可以指向一个数组作为值。

简易修复:使用数组保存键

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"]);

希望这有助于将代码添加为文本,而不是图像,并显示实际输入和所需输出。您是否阅读了“讨论”部分
allKeys
allValues
的文档?字典没有分类。我看不出这个问题的意义。我看不出他或她不进行搜索有什么意义。两天前有人问了同样的问题。