【发布时间】:2021-10-29 09:29:46
【问题描述】:
我一直想知道哪种方法是处理常见网络代码的正确方法或有效方法。对于每个功能的网络调用,我都有一个共同的地方。目标是获取数据,解码并将其返回给调用者,例如下面
问题
- 我们应该为此使用结构/枚举/类吗?为什么?
- 通过将结构用于此类类似功能,我们是否会增加应用程序大小?
protocol ModuleNetworkProvider {
func getDetails(for identifier, completion: @escaping (detailsObject?, Error?) -> ())
}
struct ModuleNetwork: ModuleNetworkProvider {
func getDetails(for identifier, completion: @escaping (detailsObject?, Error?) -> ()) {
NetworkManager.sessionManager.request(getDetails) { response
switch response.result {
case .failure(let error):
completion(nil, error)
case .success(let data):
do {
let detailsObjectData = try JSONDecoder().decode(detailsObject.self, from: data)
completion(detailsObjectData, nil)
} catch(let error) {
completion(nil, error)
}
}
}
}
}
【问题讨论】:
-
服务一般是引用类型。你既不需要也不需要值语义。
标签: ios swift class struct swift5