Dictionary
неупорядочен, вы не можете его отсортировать.
Но в вашем случае я избавился бы от словаря и у меня был бы только массив вашей модели.
Создайте пользовательский struct
, который будет представлять ваше событие, а затем вы можете отсортировать свой массив по id
свойству модели
struct Event {
let time, date, name: String
let id: Int
}
var userSchedule = [Event(time: "tbd", date: "1/15", name: "name", id: 2),
Event(time: "6:16 PM", date: "1/15", name: "Chris", id: 0),
Event(time: "1:15PM", date: "1/15", name: "John", id: 1)]
userSchedule.sort { $0.id < $1.id }
Если вы, например, получаете свой словарьв качестве ответа от сервера вы можете использовать compactMap
, чтобы переназначить его в массив Event
struct Event {
let time, date, name: String
let id: Int
}
var userSchedule = ["2": ["time": "tbd", "date": "1/15", "name": "Chris"],
"0": ["time": "6:16 PM", "date": "1/15", "name": "Bob"],
"1": ["time": "1:15PM", "date": "1/15", "name": "John"]]
var schedule = userSchedule.compactMap { (event) -> Event? in
guard let time = event.value["time"], let date = event.value["date"], let name = event.value["name"], let id = Int(event.key) else { return nil }
return Event(time: time, date: date, name: name, id: id)
}
schedule.sort { $0.id < $1.id }