我有NSDictionary
。当我打印它时,它看起来像这样:
{
3gZ0qtk0yMUEvtSmz2RW40Y7AC83 = 12;
USXhV0QYkpbSzAmXgfeteXHuoqg2 = 25;
UTPFBV5Q5IgTh17060c6WxNDQCO2 = 1;
fqsspZtskWVheqUQQtROepixsGB2 = 256;
}
我想对它进行排序,使它看起来像这样:
{
fqsspZtskWVheqUQQtROepixsGB2 = 256;
USXhV0QYkpbSzAmXgfeteXHuoqg2 = 25;
3gZ0qtk0yMUEvtSmz2RW40Y7AC83 = 12;
UTPFBV5Q5IgTh17060c6WxNDQCO2 = 1;
}
我看到的所有方法都需要一个关键名称,但我不明白。没有关键名称。对不起,如果这是重复但我从其他问题尝试的一切都不起作用。有太多的方法,我得到各种错误和其他问题所以我想知道以这种方式排序NSDictionaries
的最佳(最新)和最有效的方法。
此外,它还来自firebase快照 例如:
self.friendsDict = snapshot.value as! NSDictionary
答案 0 :(得分:1)
由于你说这个链接Swift sort dictionary by value的解决方案不起作用,我在我身边发布了一个工作代码:
let dict:NSDictionary = [
"3gZ0qtk0yMUEvtSmz2RW40Y7AC83" : 12,
"USXhV0QYkpbSzAmXgfeteXHuoqg2" : 25,
"UTPFBV5Q5IgTh17060c6WxNDQCO2" : 1,
"fqsspZtskWVheqUQQtROepixsGB2" : 256
]
let d = dict as! [String:NSInteger]
for (k,v) in (Array(d).sort {$0.1 > $1.1}) {
print("\(k):\(v)")
}
<强>输出:强>
fqsspZtskWVheqUQQtROepixsGB2:256
USXhV0QYkpbSzAmXgfeteXHuoqg2:25
3gZ0qtk0yMUEvtSmz2RW40Y7AC83:12
UTPFBV5Q5IgTh17060c6WxNDQCO2:1
修改强>
要使上述代码起作用,OP必须改变:
self.friendsDict = snapshot.value as! NSDictionary
为:
self.friendsDict = snapshot.value as! [String:NSInteger]
答案 1 :(得分:1)
试试这个 -
while (--arrLen >= 0)
printf("%d %d\n", arr[arrLen], arrLen);
OR
let dict:NSMutableDictionary = [
"3gZ0qtk0yMUEvtSmz2RW40Y7AC83" : 12,
"USXhV0QYkpbSzAmXgfeteXHuoqg2" : 25,
"UTPFBV5Q5IgTh17060c6WxNDQCO2" : 1,
"fqsspZtskWVheqUQQtROepixsGB2" : 256
]
let sortedKeys2 = (dict as NSDictionary).keysSortedByValueUsingComparator
{
($1 as! NSNumber).compare($0 as! NSNumber)
}
let dict = [
"3gZ0qtk0yMUEvtSmz2RW40Y7AC83" : 12,
"USXhV0QYkpbSzAmXgfeteXHuoqg2" : 25,
"UTPFBV5Q5IgTh17060c6WxNDQCO2" : 1,
"fqsspZtskWVheqUQQtROepixsGB2" : 256