我有一个从我的网络服务器接收Json文件的应用程序,我转换为NSDictionary,如下所示:
[NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]
我字典的结构如下:
[0] => { "name" = "josh", meters = "8" }
[1] => { "name" = "lina", meters = "10" }
[2] => { "name" = "pall", meters = "21" }
您可以看到数据已经由密钥meters
组织,遗憾的是我的网络服务器无法维持开放连接,在这种情况下,新记录将通过 APNS(推送)通知)
假设通过以下方式发出以下记录:
{"name" = "oli", meters = "12"}
我将它插入我的字典中,但是一旦完成,我怎样才能重新排列我的数组并按米排序?
答案 0 :(得分:2)
字典中没有固有的顺序。你看到初始集中的排序是偶然的。
数组有排序,您可以通过发送allKeys
或allValues
从字典中获取数组。
使用这个事实来组织字典,您可以尝试这样的事情:
NSArray *orderedPairs = [@[] mutableCopy];
for (id key in [someDictionary allKeys]) {
[orderedPairs addObject:@[key, someDictionary[key]]];
}
[orderedPairs sortUsingComparator:^NSComparisonResult(NSArray *a, NSArray *b) {
// return [a[0] compare:b[0]]; // to sort by key
return [a[1] compare:b[1]]; // to sort by value
}];
请注意,这将导致数组 - 而不是字典 - 而是一个有序的数组。
答案 1 :(得分:0)
词典没有订单。它只是键值对。您可以获取特定键的值,因此不需要像数组一样排序或排序。