swift中泛型的应用之网络请求返回model
2021-09-06 本文已影响0人
梁森的简书
不同网络接口请求返回数据结构各式各样,对应客户端的Model也是千差万别,我们在使用网络请求类的请求方法的时候希望给该方法传一个model类型,接口请求成功后返回一个对应的model,这个使用就要使用到泛型(所有的model类型都是遵守了某个协议的类型)。
代码:
func send<T>(mapObjectType: T.Type, completion: NetCompletion?) where T : BaseModelProtocol
使用:
GoodsRequest.homeData.send(mapObjectType: HomeModel.self) { result in
switch result {
case.success(let result):
guard let model = result.model as? HomeModel else { return }
self.data = model
finishCallBack(model, nil)
case .failure(let error):
finishCallBack(nil, error)
}
}
其中的HomeModel是遵守了BaseModelProtocol协议的。