只是想知道斯威夫特的字典是怎么分类的。例如,以下代码。
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
for (name, occupation) in occupations{
print("\(name) is a \(occupation)")
}
结果是这样的
Kaylee is a Mechanic
Malcolm is a Captain
Jayne is a Pirate
我的问题成立了。循环如何决定在上述循环中首先传递哪个名称(或键)?
最佳答案
来自苹果公司:
字典存储同一类型的键与
集合中没有定义顺序的同一类型的值。每个
值与唯一键相关联,该键充当
字典里的那个值与数组中的项不同
字典没有指定的顺序。
默认情况下,字典数据结构具有未指定的排序,这意味着每次遍历字典数据结构时,可能会有不同的排序。但是,可以根据键或键的值进行排序,它们都表示为数组。
所以,假设您要根据键进行排序:
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
for key in occupations.keys.sort() {
print("KEY: \(key) VALUE: \(occupations[key])")
}
控制台应显示-根据键排序-:
KEY:Jayne VALUE:Optional(“海盗”)
密钥:Kaylee值:可选(“机械师”)
密钥:Malcolm值:可选(“船长”)
注意,这些值是可选的,您可能需要“可选绑定”它们。。。
希望这有帮助。