Я хотел бы спросить, как можно передать Codable struct в качестве параметра для функции при вызове Api, потому что каждый раз вы не можете создать отдельный метод для вызова одного и того же типа api из-за различной структуры как модели. Ниже мой код:
func getTypeAPI(urlString: String, header: HTTPHeaders, completion: @escaping (MyTaskDetails?) -> Void) {
Мой вопрос, как я могу передать struct, а не name напрямую. Надеюсь, я прояснил свой вопрос. Это немного сложно спросить, потому что не получается получить правильные слова.
Обновление: я понял, что дженерики - правильный способ достичь этого
func getType<T: Decodable>(urlString: String, header: HTTPHeaders, completion: @escaping (T?) -> Void){
}
, но все же проблема здесь при звонке:
let networkManager = DataManager()
networkManager.getType(urlString: kGetMyRoles, header: header){ ([GetMyDayAndTaskDetails]) in
Ошибка выдачи:
Cannot convert value of type '([RolesMain]) -> ()' to expected argument type '(_?) -> Void'
Структуры
struct RolesMain : Codable {
let data : [Roles]
}
struct Roles : Codable {
let roleId : Int?
let roleName, roleContent : String?
private enum Codingkeys: String, CodingKey
{
case roleId = "roleId"
case roleName = "roleName"
case roleContent = "roleContent"
}
}