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的主要内容,如果未能解决你的问题,请参考以下文章

管理系统-------------SSH框架书写登录和显示用户

为什么要简化代码书写

Moya https配置方法

Mybatis简化sql书写,别名的使用

Moya 构建错误

moya 与 RxSwift 使用