按值重新组织字典顺序?

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"} 

我将它插入到我的字典中,但是一旦完成,我如何重新排列我的数组并按米排序?

字典中没有固有的顺序。您在初始集合中看到排序是偶然的。

数组是有顺序的,你可以通过发送 allKeysallValues.

从字典中获取数组

使用这个事实来组织字典,你可以尝试这样的事情:

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 
}];

请注意,这将生成一个数组——不是字典——而是一个有序的数组。

字典没有顺序。它只是键值对。您可以获取特定键的值,因此不需要像数组那样进行排序或排序。