应用 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 } } }}