#ios #swift #codable
#iOS #swift #кодируемый
Вопрос:
Я анализирую данные из JSON с помощью codable и использую свой обработчик завершения для передачи данных в источник. Однако перед передачей вызывающего абонента я хотел бы отсортировать данные, а затем отправить их. Ниже приведен мой код
func getEmployeeData(for type: Employee, completion: @escaping (Result<EmployeesBase, APIError>) -> Void) {
//set API endpoint for Employer
let endpoint = type
//Create Request with headers
let request = endpoint.mutableRequest
//get employee Data
fetch(with: request, decode: { json -> EmployeesBase? in
guard let jsonResponse = json as? EmployeesBase else { return nil }
return jsonResponse
}, completion: completion) //Sort this completion by joiningDate
}
struct EmployeesBase: Codable {
let employee: [Employee]
}
struct Employee: Codable {
let name: String
let empID: String
let joiningDate: String
let dept: String
}
Я не понимаю, как я могу это отсортировать.
Комментарии:
1. каков ожидаемый
joiningDate
формат отображения json
Ответ №1:
Вы можете сделать
jsonResponse.employee.sort { $0.joiningDate < $1.joiningDate }
struct EmployeesBase: Codable {
var employee: [Employee] // make it var , as sort is mutating
}
let joiningDate: Date // parse this key as Date with correct format
Измените декодер для этого
let decoder = JSONDecoder()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" // change to your format
decoder.dateDecodingStrategy = .formatted(formatter)