我在这里订购了一本词典:
var pickerData = [
"en":"abc",
"jp":"xyz",
"fr":"gya",
"zh-CN":"uio"]
但是当我println()pickerData.keys.array时,顺序就不像了。 我想按上面的顺序对pickerData.keys.array进行排序。 它可以吗?
答案 0 :(得分:2)
字典不是有序的数据结构。数组是。因此,从无序数据结构中获取密钥将导致无序结果。您需要创建自己的OrderedDictionary,这不是很难做到的。
这是一个带有有序字典示例的项目:https://github.com/lithium3141/SwiftDataStructures
如果你关心细节,这篇文章解释了整个事情:http://timekl.com/blog/2014/06/02/learning-swift-ordered-dictionaries/
答案 1 :(得分:1)
这是对数组键进行排序的方法:
let sortedKeys = sorted(pickerData.keys.array, {
(s1: String, s2: String) -> Bool in
return s1 < s2
})
只需替换return语句即可将排序逻辑更改为符合您要求的逻辑。
答案 2 :(得分:1)
要获得keys数组的排序版本,考虑到它是一个不可变数组,你必须:
sort
方法这是代码:
var array = pickerData.keys.array as [String]
array.sort(<)
现在array
按字母顺序排序。需要使用keys数组的副本的原因是sort
在适当的位置运行,这显然不可能在不可变数组上运行。
答案 3 :(得分:0)
从Swift 4和5开始,这变得容易得多:
for mySortedKey in pickerData.keys.sorted() {
[....]
}