我有一个从请求返回的 JSON 数组。
数据是这样的(它来自外部来源,不能从服务器更改):
[{"clients":
{"name":"Client name here","telephone":"00000","email":"clientemail@hotmail.com","website":"www.clientname.com"}
}]
我按此顺序接收 JSON 数组。
我有以下Objective-C:
//jsonString is the json string inside type NSString.
NSMutableDictionary *tempDict = [jsonString JSONValue];
NSMutableDictionary *clients = [tempDict objectForKey:@"clients"];
for(NSString *key in clients) {
id value = [tempDict objectForKey:key];
for(NSString *itemKey in key) {
NSLog(@"ITEM KEY %@: ",itemKey);
}
}
它打印密钥的顺序是:
电话
电子邮件
名称
网站
我需要它来打印它是如何接收的(例如):
姓名
电话
电子邮件
网站
我读过字典没有按定义排序,所以很高兴使用数组而不是字典。
但是我在 StackOverflow 上看到了几个关于可能的解决方案的线程(使用keysSortedByValueUsingSelector
):
Getting NSDictionary keys sorted by their different values
我可以根据 Objective-C 中的键对 NSDictionary 进行排序吗?
按字典值将 NSDictionary 键排序到 NSArray
我可以根据 Objective-C 中的键对 NSDictionary 进行排序吗?
我已经尝试过了,但一无所获。不确定是否只是我的实现是错误的。
我试过(尝试1):
NSArray *orderedKeys = [clients keySortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){
return [obj1 compare:obj2];
}];
for(NSString *key in orderedKeys) {
id value = [tempDict objectForKey:key];
for(NSString *keyThree in key) {
NSLog(@"API-KEY-ORDER %@: ",keyThree);
}
}
接收错误:[__NSArrayM keySortedByValueUsingComparator:]: unrecognized selector sent to instance
。
也尝试过(尝试2):
NSArray *sortedKeys = [[clients allKeys] sortedArrayUsingSelector: @selector(compare:)];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedKeys){
[sortedValues addObject: [tempDict objectForKey: key]];
//[sortedValues addObject: [all objectForKey: key]]; //failed
}
但是即使客户端是 NSMutableDictionary,选择器上的另一个错误。
[__NSArrayM allKeys]: unrecognized selector sent to instance 0x4b6beb0
我正处于我认为我将迭代并以正确的顺序NSMutableDictionary
手动将它们放入新的位置的地步。NSMutableArray
任何想法将不胜感激?
或者任何人尝试解决我的问题的代码片段将同样受到赞赏。