我试图将我的代码转换为Swift 2.2(自从Swift 2.0发布之前我还没有打开过这段代码)。我所做的很多事情之一就是使用字典项的.array函数将dictionarys转换为数组。这显然不再是一个功能。我应该做些什么?我认为.elements函数可以工作,但我不能使用数组[index]命令。
谢谢!
答案 0 :(得分:1)
有很多方法可以完成这样的事情。最简单的方法是将模型更改为字典数组(或自定义对象):
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 $0["name"] < $1["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 ($0, $1["name"]) } // this builds array of items like `(34, "Rob")`
.sort { $0.1 < $1.1 } // this sorts that array by the second item (e.g. the name)
.map { $0.0 } // just return the identifiers sorted by name
您现在可以下标sortedIdentifiers
,例如:
print(people[sortedIdentifiers[0]])
print(people[sortedIdentifiers[1]])
print(people[sortedIdentifiers[2]])
有很多方法可以解决这个问题。如果您编辑问题以向我们展示您的模型的样子,我们可能会提供更具体的解决方案。