2016-04-21 114 views
0

我从我的web服务器接收到一个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

尝试将dic转换为数组,然后使用NSSortDescriptor对其进行排序并将数组转换回字典。 –

回答

2

字典中没有固有的顺序。你在初始设置中看到的顺序是偶然的。

数组已经排序,您可以通过发送它从字典中获取数组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 
}]; 

注意,这将导致阵列 - 没有字典 - 而且是一个有序的。

0

词典没有排序。它只是键值对。你可以获取特定键的值,因此不需要排序或像数组一样排序。