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)
        }
    }

Но что-то не получается или как-то некрасиво получается, подскажите красивое решение
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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