Moya 书写简化思路 2 : enum 的 task

使用 Moya 做 iOS 的网络请求,
项目中有一百多个网络请求方法,就建立对应的 enum 条目
【Moya 书写简化思路 2 : enum 的 task】其中 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 } }}}

    推荐阅读