- 网络库 封装Moya+ObjectMapper 及扩展
-
扩展Moya.Response,通过泛型和ObjectMapper增数加据映射功能, 并扩展相应Rx
// 调用 let provider = MoyaProvider<YLTestApi>().rx let sequence = provider.request(.home).mapCommonModelResult() as Observable<ResponseCommonObjectResult<YLTestModel>> let single = provider.request(.home).mapCommonObjectData() as Single<YLTestModel>
-
扩展TargetType协议,封装MoyaProvider 1 YLTargetType+DataProvider
// 调用 let provider = DataProvider<YLTestApi>(). let sequence1 = provider.rx.requestModel(.home) let sequence2 = provider.rx.requestResult(.home)
+ 扩展TargetType协议,封装MoyaProvider 2 XLTargetType+XLProvider
```
// 调用
let provider = XLProvider<XLTestApi>()
let userSequence = provider.rx.requestResult(.user) as Observable<XLRequestResult<XLTestModel>>
```
- 请求数据 加载动画库, 核心协议
/// 请求数据 with 页面动画
public protocol PageRequestable: class{
func requestData()
func pageLoadingView() -> UIView
func layoutLoadingView(_ view: UIView)
func requestFailedView(error: Error) -> ReRequestableView
func layoutFailedView(_ view: ReRequestableView)
}
/// 请求数据 with hud动画, eg: 菊花样式
public protocol HudRequestable: class{
func hudLoadingView() -> UIView
func layoutHudLoadingView(_ view: UIView)
}
public typealias ReRequestableView = ReRequestable & Viewable
public protocol ReRequestable: class {
var request: () -> Void { set get }
}
public protocol Viewable{
var realView: UIView { get }
}
-
上拉加载 下拉刷新 自动创建框架
思路: 通过指定下拉加载和上拉刷新的hanlder,可自动创建对应的 header&footer, 可根据style批量定制 Demo
protocol Scrollable { var scrollView: UIScrollView { get } } protocol Refreshable:class, Scrollable { typealias RefreshHanlder = () -> Void func mjRefreshHeader(hanlder: @escaping RefreshHanlder) -> MJRefreshHeader func mjRefreshFooter(hanlder: @escaping RefreshHanlder) -> MJRefreshFooter }