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