Как отсортировать данные массива UITableview по времени, используя swift - PullRequest
3 голосов
/ 08 октября 2019

В моем случае я пытаюсь загрузить JSON данные в UITableview. Здесь данные JSON, которые я получаю из API с помощью метода Codable и Decodable. Теперь у меня нет идентификатора для сортировки моего списка, потому что я использую dictionary неупорядоченный. Итак, как этого добиться?

ПРИМЕЧАНИЕ: meeting_id на основе необходимости сортировать мою загрузку данных просмотра таблицы.

Образец JSON

{
    "status": true,
    "data": [
        {
            "meeting_id": "37",
            "title": "abc",
            "sort_key": "21:00",
        },
        {
            "meeting_id": "41",
            "title": "a1",
            "sort_key": "03:00",
        }
    ]
}

Кодируемая структура

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"
    }
}

Декодирование моего кода

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)
                    }
                }

1 Ответ

2 голосов
/ 08 октября 2019

попробуй

self.eventsData = decoder.data
self.eventsData  = self.eventsData.sorted(by: { $0.meetingID > $1.meetingID })
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    self.tableView.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...