Moya 书写简化思路 2 : enum 的 task
Posted 邓轻舟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Moya 书写简化思路 2 : enum 的 task相关的知识,希望对你有一定的参考价值。
使用 Moya 做 ios 的网络请求,
项目中有一百多个网络请求方法,就建立对应的 enum 条目
其中 task 的填写,一般 case 下,再这样
enum NetHud{
case modify_content(R_create_content)
// ...
}
extension NetHud{
public var task: Task {
case .modify_content(dat):
return .requestJSONEncodable(dat)
// ...
// 反复抄写
}
}
使用 Mirror, 改造
enum NetHud{
case modify_content(R_create_content)
// ...
}
extension NetHud{
var obj: Encodable?{
let mirror = Mirror(reflecting: self)
if let val = mirror.children.first?.value as? Encodable{
return val
}
else{
return nil
}
}
public var task: Task {
default:
if let dat = obj{
return .requestJSONEncodable(dat)
}
else{
// 不会走,
// 省略书写
return .requestPlain
}
}
}
}
以上是关于Moya 书写简化思路 2 : enum 的 task的主要内容,如果未能解决你的问题,请参考以下文章