我有一个字典,我想在tableview中迭代。一种方法是使用所有键创建一个数组,并在给定索引处获取键。但对于这个数组,我希望键按字典中的字母顺序排序。我该怎么做?
static let dict = [
"0P0000KBNA": "Länsförsäkringar Europa Indexnära",
"0P0000YVZ3": "Länsförsäkringar Global Indexnära",
"0P0000J1JM": "Länsförsäkringar Sverige Indexnära",
"0P00013668": "Länsförsäkringar Tillväxtmarknad Indexnära A",
"0P0000K9E7": "Länsförsäkringar USA Indexnära",
"0P00005U1J": "Avanza Zero"
]
static let sortedKeys = Array(dict.keys) // How?
答案 0 :(得分:3)
您只需按值对字典进行排序并映射密钥
let sortedKeys = dict.sorted{$0.value < $1.value}.map{$0.key} // ["0P00005U1J", "0P0000KBNA", "0P0000YVZ3", "0P0000J1JM", "0P00013668", "0P0000K9E7"]
答案 1 :(得分:3)
作为@LeoDabus answer的一个小变体,您可以访问字典的keys
属性,并根据每个键的相应value
对此数组进行排序
let sortedKeys = dict.keys.sorted { dict[$0]! < dict[$1]! }
print(sortedKeys)
/* ["0P00005U1J",
"0P0000KBNA",
"0P0000YVZ3",
"0P0000J1JM",
"0P00013668",
"0P0000K9E7"] */
另请注意,通常应避免强制解包运算符!
,但在这种特殊情况下,我们知道谓词闭包中的速记参数$0
和$1
都提供给sorted(...)
保证是字典中的有效键(因为你的字典是不可变的:所以这里没有异步风险)。
答案 2 :(得分:0)
首先,创建一个名为keysArray的新字符串数组。
其次,遍历您的字典数组并将所有键添加到新创建的数组中。
现在keysArray应该是键的数组。
第三,按如下排序sortedKeysArray
var sortedArray = sortedKeysArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending}
现在我们有了一系列已排序的密钥。
如果你需要有一个字典数组,那么创建一个名为sortedDictArray的新数组。然后遍历我们之前创建的sortedKeysArray并按键获取字典并将其添加到sortedDictArray。中提琴!
希望这能帮到你!
答案 3 :(得分:0)