我有一组[[String:SchoolModel]]
类型的字典。密钥是学校的ID,然后学校模型包含有关学校的信息,例如其名称。我想按SchoolModel.name对该数组进行排序,但由于我的键是数组中每个元素的唯一ID,因此无法弄清楚。
struct SchoolModel {
var name: String
var city: String
var state: String
}
答案 0 :(得分:1)
您可以访问每个字典的第一个值,以获取名称。
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
。
struct SchoolModel {
var id: String?
var name: String
var city: String
var state: String
}
然后,在您要填充字典数组的任何地方,附加SchoolModel
对象而不将其嵌入字典中,从而得到[SchoolModel]
类型的数组。