按值重新组织字典顺序?
Reorganize dictionary order by values?
我有一个应用程序可以从我的网络服务器接收一个 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"}
我将它插入到我的字典中,但是一旦完成,我如何重新排列我的数组并按米排序?
字典中没有固有的顺序。您在初始集合中看到排序是偶然的。
数组是有顺序的,你可以通过发送 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
}];
请注意,这将生成一个数组——不是字典——而是一个有序的数组。
字典没有顺序。它只是键值对。您可以获取特定键的值,因此不需要像数组那样进行排序或排序。
我有一个应用程序可以从我的网络服务器接收一个 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"}
我将它插入到我的字典中,但是一旦完成,我如何重新排列我的数组并按米排序?
字典中没有固有的顺序。您在初始集合中看到排序是偶然的。
数组是有顺序的,你可以通过发送 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
}];
请注意,这将生成一个数组——不是字典——而是一个有序的数组。
字典没有顺序。它只是键值对。您可以获取特定键的值,因此不需要像数组那样进行排序或排序。