我有一组类型为 的字典[[String:SchoolModel]]
。键是学校的 id,然后学校模型包含有关学校的信息,例如其名称。我想按 SchoolModel.name 对这个数组进行排序,但无法弄清楚如何因为我的键是数组中每个元素的唯一 ID。
struct SchoolModel {
var name: String
var city: String
var state: String
}
您可以访问迭代的每个字典的第一个值以获取名称。
struct SchoolModel {
var name: String
var city: String
var state: String
}
let schools: [[String:SchoolModel]] = [
["1": SchoolModel(name: "1", city: "a", state: "x")],
["2": SchoolModel(name: "2", city: "b", state: "y")],
["3": SchoolModel(name: "3", city: "c", state: "z")]
]
print(schools.sorted {
guard
let a = $0.values.first?.name,
let b = $1.values.first?.name else { return false }
return a < b
})
但是,您应该考虑向id
结构中添加属性。您可以将其设为可选,以便您仍然可以启动SchoolModel
尚未创建的 a。
struct SchoolModel {
var id: String?
var name: String
var city: String
var state: String
}
然后,无论您在何处填充字典数组,都可以追加SchoolModel
对象而不将其嵌入字典中,从而生成类型为 的数组[SchoolModel]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句