前言
RxSwift 源自ReactiveX,它蕴含了深刻的FRP思想,这是一个崭新的世界,我也是慕名而来,本着好学的心态,叩开RxSwift的大门,来了之后才发现,这里人迹罕至,路上满是泥泞,坑坑洼洼,幸好遇到了RxExample, 从此便奉为圭皋,仔细研读,跟随者开拓者的足迹,我也进行了一次RxSwift之旅,其中酸甜苦辣,请亲自品尝。
装备
装备的选择对你趟坑过河的影响还是蛮大的,选好内裤,走起路来便可以雄赳赳气昂昂。 我选择的内裤便是 Moya、Alamofire、ObjectMapper 等,有了这些内裤,你便可以优雅的踩坑。
出发
作为一个swifter Alamofire 对你来说并不陌生,它的优雅与简洁没有多少库能出其左右,然而对于 Moya 你可能未必熟悉,不过你不熟悉也没关系,协议和扩展造就了他的优雅与平易近人,你可以轻松的用它来封装你的网络请求层,他与Alamofire 也是不离不弃.
如果想获取信息,那么你需这样做:
这样就可以封装好你的API了
既然我们来到的FRP的路上,那么我们应该也改改以前惯用的MVC了,MVVM 才是更优雅的姿势,那个问题来了,我们的viewModel 呢?别着急,请看下面:
在viewModel中我提供了一个网络 Observable 以供外部订阅,将数据转化为可以订阅的Stream
那么这样我们就可以到 Controller 进行数据订阅了:
当我们拿到了数据,我们就可以进行数据展示了,这与我们常规的数据展示不无差别
好了,由于文字功底有限,我就不赘述了
完整项目可移步:https://github.com/CNKCQ
相关资料:
https://mcxiaoke.gitbooks.io/rxdocs/content/
https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md
http://cocoadocs.org/docsets/RxCocoa/1.5/index.html
https://coderwall.com/p/vti_8w/rxswift-learning-resources
https://leon_lizi.gitbooks.io/rx-/content/observableyu_alamofire.html
http://www.oschina.net/openapi/docs/