将我的代码转换为 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]])
有很多方法可以解决这个问题。如果您编辑您的问题以向我们展示您的模型的外观,我们也许能够提供更具体的解决方案。
我正在尝试将我的代码转换为 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]])
有很多方法可以解决这个问题。如果您编辑您的问题以向我们展示您的模型的外观,我们也许能够提供更具体的解决方案。