将我的代码转换为 new Swift (2.2),字典没有数组功能?

Converting my code to new Swift (2.2), dictionary doesn't have array function?

我正在尝试将我的代码转换为 Swift 2.2(在 Swift 2.0 发布之前我还没有打开过这段代码)。我经常做的事情之一是使用字典项的 .array 函数将字典转换为数组。这显然不再是一个功能。我应该做些什么?我认为 .elements 函数可以工作,但我无法使用数组 [index] 命令进行拉取。

谢谢!

有很多方法可以完成这样的事情。最简单的方法是将模型更改为字典数组(或自定义对象):

var people = [
    ["name": "Rob", "city": "New York", "state": "NY", "street": "11 Wall Street"],
    ["name": "Jim", "city": "Washington", "state": "DC", "street": "1600 Pennsylvania Avenue"],
    ["name": "Sue", "city": "Los Angeles", "state": "CA", "street": "4059 Mt Lee Dr."]
]

而且,如果您想按 name 排序:

people.sortInPlace { return [=11=]["name"] < ["name"] }

或者,假设您真的有一个字典,其中唯一标识符是键:

var people = [
    34: ["name": "Rob", "city": "New York", "state": "NY", "street": "11 Wall Street"],
    42: ["name": "Jim", "city": "Washington", "state": "DC", "street": "1600 Pennsylvania Avenue"],
    65: ["name": "Sue", "city": "Los Angeles", "state": "CA", "street": "4059 Mt Lee Dr."]
]

然后您可以构建一个按名称排序的标识符数组:

let sortedIdentifiers = people.map { return ([=13=], ["name"]) }  // this builds array of items like `(34, "Rob")`
    .sort { [=13=].1 < .1 }                                       // this sorts that array by the second item (e.g. the name)
    .map { [=13=].0 }                                               // just return the identifiers sorted by name

您现在可以下标 sortedIdentifiers,例如:

print(people[sortedIdentifiers[0]])
print(people[sortedIdentifiers[1]])
print(people[sortedIdentifiers[2]])

有很多方法可以解决这个问题。如果您编辑您的问题以向我们展示您的模型的外观,我们也许能够提供更具体的解决方案。