In my case, I am trying to loading JSON data into UITableview. Here, JSON data I am getting from API with help of Codable and Decodable method. Now, I don’t have any ID to sort my list because I am using dictionary unordered. So, how to achieve this?
NOTE: meeting_id based need to sort my tableview data load.
JSON Sample
{
"status": true,
"data": [
{
"meeting_id": "37",
"title": "abc",
"sort_key": "21:00",
},
{
"meeting_id": "41",
"title": "a1",
"sort_key": "03:00",
}
]
}
Codable Structure
struct Events: Codable {
let status: Bool
let data: [Eventdata]
}
struct Eventdata: Codable {
let meetingID, title, sort_key: String
enum CodingKeys: String, CodingKey {
case meetingID = "meeting_id"
case title
case sortKey = "sort_key"
}
}
My Code Decoding
var eventsData = [Eventdata]()
do {
let decoder = try JSONDecoder().decode(Events.self, from: data)
let status = decoder.status
if status == true {
self.eventsData = decoder.data
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.tableView.reloadData()
}
} else {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
//self.Alert(Meesage: ServerValidation().servervalidation_msg)
}
}
} catch {
print(error)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
//self.Alert(Meesage: ServerError().servererror_msg)
}
}
try
self.eventsData = decoder.data
self.eventsData = self.eventsData.sorted(by: { $0.meetingID > $1.meetingID })
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.tableView.reloadData()
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With