Задать вопрос
saintbyte
@saintbyte
Django developer

Как сделать у функции как параметр в который передавать класс который требуется для работы внутри функции?

class func getData(
        Id: Int,
        completion: @escaping (_ response: DataResponse<MapFeatureCard>) -> Void)
    {
        let urlPath  = "https://site.ru/api/v11/superobjects/"+String(Id)
        Alamofire.request(urlPath)
            .validate()
            .cache(maxAge: 60, isPrivate: false, ignoreServer: true)
            .responseObject { (response: DataResponse<MapFeatureCard>) in
                completion(response)
        }
    }

Как видите ничего сверх сложного нет. Но тут ответ из JSON мапится в словарь структур DataResponse .
Но хотелось бы указывать в параметрах getData типа который будет мапится и чтоб по умолчанию стояло было DataResponse ( чтоб существующий код не ломать )
Вот как-то так хочется:
class func getData(
        Id: Int,
        RespType: Type = DataResponse<MapFeatureCard>, 
        completion: @escaping (_ response: RespType) -> Void)
    {
        let urlPath  = "https://site.ru/api/v11/superobjects/"+String(Id)    
        Alamofire.request(urlPath)
            .validate()
            .cache(maxAge: 60, isPrivate: false, ignoreServer: true)
            .responseObject { (response: RespType) in
                completion(response)
        }
    }

Но что-то не получается или как-то некрасиво получается, подскажите красивое решение
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    iOS-разработчик
    10 месяцев
    Далее
  • Нетология
    iOS-разработчик с нуля
    11 месяцев
    Далее
  • LearnQA
    Автоматизатор мобильных приложений
    9 недель
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы