Я пытаюсь обновить значения в модели и использовать декодирование и кодирование операции JSON. Я создал модель по данным. Все работает нормально, но если я снова декодирую свою модель, она выдает ошибку typeMismatch. Я пробовал, но безуспешно. Кто-нибудь может мне помочь?
Примечание. При печати исходных данных JSON и закодированных данных вы можете увидеть разницу. В закодированных данных тег
"appointments":
отсутствует, как я могу это обработать и добавить.
Исходные данные JSON:
{
"appointments": [
{
"id": 15473454,
"isProjectManual": false,
"projectType": "i",
"appointmentHour": "05:04",
"projectName": "Farid Farjad",
"warmingType": "b",
"subTitle": "4874345 ",
"projectDistrict": "Çay",
"projectFirmName": "Test Firması",
"controlHour": "",
"date": "2019-12-26T05:04:00",
"backgroundColorLight": "#cfd8dc",
"backgroundColorDark": "#556f7b"
}
],
"isSuccess": true,
"message": "İşlem Başarılı.",
"statusCode": 1
}
Модели:
struct ResponseData: Codable {
let appointments : [Appointment]?
let isSuccess : Bool?
let statusCode : Int?
let message : String?
}
struct Appointment : Codable {
let appointmentHour : String?
let backgroundColorDark : String?
let backgroundColorLight : String?
let controlHour : String?
let date : String?
let id : Int?
let isProjectManual : Bool?
let projectDistrict : String?
let projectFirmName : String?
let projectName : String?
let projectType : String?
let subTitle : String?
let warmingType : String?
}
Кодировать:
var Appdata : [Appointment]?
let jsonData = try! JSONEncoder().encode(self.Appdata)
let jsonString = String(data: jsonData, encoding: .utf8)!
print(jsonString)
Кодировать отпечатки
[
{
"projectName": "Farid Farjad",
"id": 15473454,
"subTitle": "4874345 ",
"appointmentHour": "05:04",
"projectDistrict": "Çay",
"projectFirmName": "Test Firması",
"date": "2019-12-26T05:04:00",
"backgroundColorLight": "#cfd8dc",
"backgroundColorDark": "#556f7b",
"isProjectManual": false,
"controlHour": "",
"projectType": "i",
"warmingType": "b"
}
]
Код декодирования
let dec = JSONDecoder()
let resp = try dec.decode(ResponseData.self, from: jsonData)
print(resp)
Расшифровать отпечатки
typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))
let resp = try dec.decode([Appointment].self, from: jsonData)
- person chirag90   schedule 27.01.2020let jsonData = try! JSONEncoder().encode(self.Appdata)
. Что такоеself.Appdata
? - person Vadim Nikolaev   schedule 27.01.2020var Appdata : [Appointment]?
- person   schedule 27.01.2020ResponseData.self
- person   schedule 27.01.2020let result = try JSONDecoder().decode(ResponseData.self, from: data)
, а затемappend
наresult.appointments
свойAppointment(appointmentHour: "05:04", backgroundColorDark: "#cfd8dc", backgroundColorLight: "#556f7b", controlHour: "", date: "2019-12-26T05:04:00", id: 15473454, isProjectManual: false, projectDistrict: "Çay", projectFirmName: "Test Firması", projectName: "Farid Farjad", projectType: "i", subTitle: "4874345 ", warmingType: "b")
и работать с двумя встречами (например, вернуться сcompletionHandler
) - person Vadim Nikolaev   schedule 27.01.2020ResponseData
- person Joakim Danielson   schedule 27.01.2020