BasisComponent 0.2.9

BasisComponent 0.2.9

U7426 维护。



 
依赖项
RxSwift>= 0
RxCocoa>= 0
Alamofire>= 0
HandyJSON>= 0
SwifterSwift>= 0
SnapKit>= 0
MJRefresh>= 0
Kingfisher= 4.10.1
FDFullscreenPopGesture>= 0
MBProgressHUD>= 0
 

  • 作者
  • U7426

BasisComponent

CI Status Version License Platform

示例

要运行示例项目,首先从仓库克隆项目,然后在Example目录中运行 `pod install`。

描述

1、常用的扩展,工具类等

2、为部分系统控件添加Reactive扩展

3、基于CTMediator的Swift版本,加以改造

4、为一些三方控件添加Reactive扩展,Refresh,Hud 等

5、将Alamofire请求转换为Observable,并带自动解析

中介者

路由的基本实现:
/// 路由调用组件库
/// - Parameters:
///   - module: 模块名
///   - functionKey: 方法键
///   - params: 要传递的参数
///   - result: 回调
/// - Returns: void
public func perform(_ module: String, functionKey: String, params: [String:Any],result:MediatorResult = nil) -> () {
    let `class`: AnyClass? = NSClassFromString(module + "." + "Target")
    guard let anyclass = `class` as? NSObject.Type else {
        return
    }
    let object = anyclass.init()
    let mirror = Mirror.init(reflecting: object)
    print("Target:\(module).\(mirror.subjectType)")
    for (name, value) in (mirror.children) {
        if name != "functions" {
            break
        }
        if let function = value as? Dictionary<String,MediatorJsonAndResult> {
            function[functionKey]?(params,result)
            return
        }
    }
}
    
用例Target:
class Target: NSObject {
    static let `default` = Target()
    let functions : [String : Mediator.MediatorJsonAndResult] = [
        "test":{json,result in
            Target.default.test(params: json, result: result)
        }
    ]
    func test(params:Mediator.MediatorJson,result:Mediator.MediatorResult) -> () {
        print("targt 执行")
        result?("complete")
    }
}

路由调用测试:
Mediator.default.perform("BasisComponent", functionKey: "test", params: [:]) { result in
   print(result ?? "Complete")
}

网络

class User: HandyJSON {
    var name : String?
    required init() {}
}

let api = NetToolClient()
api.path = "url"
api.parameters = ["a":1]

//example1 : 普通的网络请求(返回Json)
api.request { (result:Result<JsonType>) in
    if result.isSuccess {
        print(result.value?["name"] ?? "")
    }
    else{
        print(result.error!)
    }
}

//example2 : 普通的网络请求(返回User)
api.request { (result:Result<User>) in
    if result.isSuccess {
        print(result.value?.name ?? "")
    }
    else{
        print(result.error!)
    }
}

//example3: RX网络请求(返回 Observeable<User>)
let observable = api.rx.request() as Observable<User>
observable.subscribe(onNext: { user in
    print("\(user.name ?? "")")
}).disposed(by: disposeBag)

需求

安装

BasisComponent 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中

pod 'BasisComponent'

作者

U7426,[email protected]

许可

BasisComponent 在 MIT 许可下提供。更多信息请参阅 LICENSE 文件。