привет, я хочу спросить, я пытался разобрать Json из этих Json данных
{
"data": {
"user_attendances": [
{
"user": {
"id": "028511ec-f384-4fc2-a7d2-8918392c9993",
"full_name": "Mariah Carrey"
},
"attendance": {
"status": "sick"
}
}
],
"attended": 7,
"unattended": 3,
"present": 7,
"permission": 1,
"sick": 1,
"abstain": 1
}
}
, затем я делаю модель, которую вставляю из QuickType.io в мой файл swift
struct DataAttendance: Codable {
let data: DataClass?
}
// MARK: - DataClass
struct DataClass: Codable {
let userAttendances: [UserAttendance]?
let attended, unattended, present, permission: Int?
let sick, abstain: Int?
}
// MARK: - UserAttendance
struct UserAttendance: Codable {
let user : User?
let attendance : AttendanceClass?
}
// MARK: - AttendanceClass
struct AttendanceClass: Codable {
let status: String?
}
// MARK: - User
struct User: Codable {
let id, fullName: String?
}
, так как я хочу сохранить данные в массиве, поэтому я создаю для него другую модель
struct Attendance {
var id : String
var fullName : String
var status : String
var attended : Int
var unattended : Int
var present : Int
var permission : Int
}
и, поскольку я хочу вернуть данные из API, я делаю запрос с Alamofire с помощью этого метода
func getUserAttendanceBy(classId: String, date: String, completion: @escaping (Result<Attendance, GAttendanceError>) -> Void) {
HEADERS["Authorization"] = token
let params = ["class_id": classId, "attendance_date": date]
AF.request(API_URL.ATTENDANCE.ATTENDANCE_INDEX, method: .get, parameters: params, encoding: JSONEncoding.default, headers: HEADERS).responseJSON(completionHandler: { dataResponse in
if let _ = dataResponse.error {
completion(.failure(.invalidClassID))
}
guard let response = dataResponse.response, response.statusCode == 200 else {
completion(.failure(.invalidResponse))
return
}
guard let data = dataResponse.data else {
completion(.failure(.invalidData))
return
}
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let json = try decoder.decode(DataAttendance.self, from: data)
print(json)
} catch {
}
})
}
Затем я проверяю его на фиктивных данных, но не возвращаю данные, даже если пытаюсь напечатать внутри функции
UserServices.shared.getUserAttendanceBy(classId: "4bae2594-b3a7-4b9c-ad83-0a1c4be0d790", date: "2020-02-10") { result in
switch result {
case .success(let attendances):
print(attendances)
break
case .failure(let error):
break
}
}
Пожалуйста, помогите мне, где я делаю ошибку?