Я пытаюсь создать универсальную функцию декодирования, чтобы декодировать мои две разные модели. Я получаю сообщение об ошибке «Тип аргумента« PrivateSchoolType.Type »не соответствует ожидаемому типу« Декодируемый »».
Модель
struct PrivateSchoolModel: Decodable {
var name: String
var id: String
var city: String
var state: String
}
Функция вызова
function getInfo() {
// does not work => ERROR
guard let schools = decode(jsonData: jsonData, using: PrivateSchoolModel) else { return }
// does work
guard let schools = specificDecode()
}
Специальная функция декодирования (РАБОТАЕТ)
private func specificDecode() -> [PrivateSchoolModel]? {
guard let jsonData = getJSONData(from: .privateSchool) else { return }
do {
let decoder = JSONDecoder()
let schools = try decoder.decode([PrivateSchoolModel].self, from:
jsonData)
return schools
} catch let error {
print("Error: \(error.localizedDescription)")
}
return nil
}
Общая функция декодирования (НЕ РАБОТАЕТ)
private func decode<M: Decodable>(jsonData: Data, using model: M) -> [M]? {
do {
//here dataResponse received from a network request
let decoder = JSONDecoder()
let schools = try decoder.decode([M].self, from:
jsonData) //Decode JSON Response Data
return schools
} catch let parsingError {
print("Error", parsingError)
}
return nil
}