Вы можете получить доступ к первому значению каждого итеративного словаря, чтобы получить имя.
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]
.