首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS - RxSwift 项目实战记录

Rx // 为我们提供 rx_disposeBag Moya/RxSwift // 为RxSwift专用提供,对Alamofire进行封装一个网络请求库 ObjectMapper...,它在Moya基础上添加了对RxSwift接口支持。...) 使用数据源属性绑定我们cell // 绑定cell dataSource.configureCell = { ds, tv, ip, item in // 这个地方使用了Reusable这个库...遵守LXFViewModelType协议 我们可以为XFViewModelTypeInputOutput定义别名,以示区分,:你这个viewModel用于请求首页模块相关联,则可以命名为:HomeInput...,使用outputrequestCommond发射信息,告诉viewModel我们要加载数据 viewModel请求数据,在处理完json转模型或模型数组后修改models,当models值被修改时候会发信号给

2.9K41

MVVM+RxSwift

前言 以前对MVVM理解运用觉得很浅薄,在项目中用处只是对ViewController减负 没有做数据与View绑定,没有做到真正数据驱动视图 没有体现出MVVM易于测试好处 对于RxSwift...RxSwift有一定了解使用。...网络请求框架我们用Moya,因为它可以使我们请求得到一个序列,然后我们才可以进行数据绑定。...ViewControllerView ViewController主要作用是管理视图生命周期,绑定数据View关系,数据绑定实现主要是通过RxDataSources+RxSwift来实现,...Navigator中核心代码 总结 要搭建一个上述MVVM项目,RxSwift,RxDataSources,Moya是必不可少,并且你要会用RxDataSource创建UITableView数据

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

【iOS】仿知乎日报,RxSwift-Part1-首页搭建

前言 之前几篇博客算是入门篇,那么这篇就是RxSwift实战篇。由于对RxSwift认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。...最后,还是非常感谢该作者源码贡献~ 框架介绍 框架 说明 Moya 对Alamofire封装 Moya/RxSwift 针对RxSwiftMoya扩展 Kingfisher 喵神网络图片加载库...首先头部轮播图是使用UICollectViewpageControl实现,只要对数组首尾做处理,即可实现无线轮播效果。...那么只要显示第一张或最后一张时,马上修改collectViewcontentOffset即可瞒天过海,具体实现参考项目代码吧~ 2.2、向下拖拽时,图片会放大 其实也是监听tableView滚动,改变轮播图中图片高度即可...使用Moya,可以优雅封装Alamofire,而Moya/Rxswift可以将返回结果转为Observable属性,进行监听。

2.3K10

RxSwift底层原理及结合MVVM架构在项目中应用

RxSwift 是 Rx 为 Swift 语言开发一门函数响应式编程语言, 它可以代替iOS系统 Target Action / 代理 / 闭包 / 通知 / KVO,同时还提供网络、数据绑定、UI...事件处理、UI展示更新、多线程…… RxSwift:它只是基于 Swift 语言 Rx 标准实现接口库,所以 RxSwift 里不包含任何 Cocoa 或者 UI 方面的类。...联系 Sink充当Observer AnyObserver.on —-> Sink.on —-> Observer.on —> Observer.OnCore 项目中应用 RxSwift+Moya...MVVM架构模式把业务逻辑从controller集中到了ViewModel中,方便进行单元测试自动化测试 ViewModel业务模型如下: viewmodel相当于是一个黑盒子,封装了业务逻辑,进行输入输出转换...其中View、Model与MVC架构模式下负责任务相同。controller由于业务逻辑移到了Viewmodel中,它本身担起了中间调用者角色,负责把ViewViewmodel绑定在一起。

1.7K10

RxSwift介绍(一)——RxSwift初探

在swift环境下,RAC孪生兄弟RxSwift同样提供了相同框架使用,并且基于swift语言优点,RxSwift甚至能够更简洁地开发业务代码。关于RxSwift优点,大把大把的人在夸。...tableView在swift环境下实现 遵循tableView代理方法还是一既往繁多 接下来,在使用RxSwift框架下改造上面的tableView,来感受下RxSwift强大。...与tableView进行绑定 viewModel.infoAry.bind(to: firstTableView.rx.items(cellIdentifier:resuerId)){...结构体中数据需要被RxSwift包装成了Observable信号。...在视图控制器或者其持有者将要销毁时候,会自动释放掉绑定在它上面的资源。它是通过类似“订阅处置机制”方式实现(类似于 NotificationCenter removeObserver)。

2.9K40

打造Moya便捷解析库,提供RxSwift拓展

3、以下内容是基于大家会使用MoyaSwiftJSON前提下所著,还不会同学可以先简单了解后再来阅读本篇文章哦~ 二、功能开发与思想讲解 1、尝试模型解析 Moya请求服务器返回数据以Response...模型数组解析指定解析也跟这些差不多,这里就不再赘述。本人已经将其封装成一个开源库 MoyaMapper,包含了上述已经未曾说明功能,下面会讲解如何去使用。...MoyaMapper是基于MoyaSwiftyJSON封装工具,以Moyaplugin方式来实现间接解析,支持RxSwift 1、定义并注入自定义键名类 定义一个遵守ModelableParameterType...:项目中需要在某处使用特定接口,但是返回json格式跟自己项目的不一样,并且只有这么一两处用得着该额外接口,那就需要我们这个参数了,以Block方式返回解析参数类型。...>, keys: ) MoyaMapper也提供了Rx子库,为方便RxSwift流式编程下便捷解析数据 MoyaMapper默认只安装Core下文件 pod

1K30

Swift 掌控Moya网络请求、数据解析与缓存

Moya 在Swift开发中起着重要网络交互作用,但是还有不如之处,比如网络不可用时,返回 Response 为 nil,这时还得去解析相应 Error Codable 可以帮助我们快速解析数据...掌控Moya网络请求、数据解析与缓存简直易如反掌。...MoyaMapper是基于MoyaSwiftyJSON封装工具,以Moyaplugin方式来实现间接解析,支持RxSwift GitHub: MoyaMapper ?...二、Model声明 Model 需遵守 Modelable 协议 MoyaMapper 支持模型自动映射 自定义映射 不需要考虑源json数据真实类型,这里统一按 Model 中属性声明类型进行转换...统一处理网络请求结果 在APP实际使用过程中,会遇到各种各样网络请求结果,:服务器挂了、手机无网络,此时 Moya 返回 Response 为 nil,这样我们就不得不去判断 Error。

2.5K30

打造Moya便捷解析库,提供RxSwift拓展

3、以下内容是基于大家会使用MoyaSwiftJSON前提下所著,还不会同学可以先简单了解后再来阅读本篇文章哦~ 二、功能开发与思想讲解 1、尝试模型解析 Moya请求服务器返回数据以Response...模型数组解析指定解析也跟这些差不多,这里就不再赘述。本人已经将其封装成一个开源库 MoyaMapper,包含了上述已经未曾说明功能,下面会讲解如何去使用。...MoyaSwiftyJSON封装工具,以Moyaplugin方式来实现间接解析,支持RxSwift 1、定义并注入自定义键名类 定义一个遵守ModelableParameterType协议结构体...:项目中需要在某处使用特定接口,但是返回json格式跟自己项目的不一样,并且只有这么一两处用得着该额外接口,那就需要我们这个参数了,以Block方式返回解析参数类型。...>, keys: ) MoyaMapper也提供了Rx子库,为方便RxSwift流式编程下便捷解析数据 MoyaMapper默认只安装Core下文件 pod

1K111

【iOS】RxSwift官方Example4--Github注册(MVVM)

前言 这一篇,是一个仿Github注册表单页面。官方针对这个例子,介绍了用RxSwift实现MVVM,一个是使用Driver 序列(针对UI界面的),另一个是Observable 序列。...视图(View)可以独立于Model变化修改,一个ViewModel可以绑定到不同"View"上,当View变化时候Model可以不变,当Model变化时候View也可以不变。 可重用性。...开发人员可以专注于业务逻辑和数据开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。 可测试。...作用是一样,都是绑定结果,可以直接这样理解: bindTo用于Observable driver用于Driver 使用bindTo,这里viewModel.validateUsername是Observable...这个例子精华在于MVVM思想,通过ViewModel将视图模型绑定在一起,从而达到解耦效果。 Demo地址 https://github.com/maple1994/RxSwfitTest

78940

聊聊iOS开发之MVVM架构设计

Controller夹在ViewViewModel之间做其中一个主要事情就是将ViewViewModel进行绑定....,delegatetarget-action都可以用来做数据通信, 从而来实现绑定,但都不如ReactiveCocoa提供RACSignal来优雅, 使用函数响应式框架能更好实现数据视图双向绑定...ReactiveCocoa或RXSwift通过这两个框架可以实现ViewModelView双向绑定, 但同样会存在几个比较重大问题。...首先,ReactiveCocoa或RXSwift学习成本很高; 其次, 数据绑定使得 Bug 很难被调试,当界面出现异常,可能是View问题,也可能是数据ViewModel问题。...Controller则是最后大家长,负责将ViewModelViewManger进行绑定, 进行数据转发工作。把合适数据模型分发给合适视图管理者。

8.7K92

闭包是个好东西,巧用闭包实现数据绑定

数据绑定 但是,说到 MVVM 模式时候,我们又必须讲到数据绑定这个知识点。...这样处理数据并没有毛病,但是如果遇到 UI 上有大量控件需要不定时更新数据时,那通过 Delegate Notification 方式就会显得不够优雅,所以我们才会讲到数据绑定这个知识。...现在关于数据绑定成熟解决方案有很多,譬如说 RXSwift,KVO 等等,在这里我就不再多介绍这些方式了,感兴趣同学可以自行 Google 一下。...今天我要给大家介绍是另一种方式,那就是使用闭包来实现数据绑定。 闭包为何物 闭包是自包含函数代码块,可以在代码中被传递使用。闭包可以捕获存储其所在上下文中任意常量或变量引用。...首先,为了能让 ViewModel View 之间能形成绑定,我们需要提供一种简单机制让 ViewModel数据源与 View 中控件绑定在一起。

46410

iOS 开发中 ViewModel

有几种方案: UI 布局尽量用 IB 来做,把绑定逻辑放到 View 中 把绑定逻辑放到 Model 中 定义单独 ViewModel 加工 Model,并把适合展示数据输出给 View 以上这几种方案主要说数据绑定...,而且都是单向绑定,实际上 ViewModel 还可以跟 View 进行双向数据绑定、逻辑绑定等,这些先按下不表,下面举个例子分别说说这三种单向数据绑定实现以及优缺点。...那我们就把“数据加工”这个逻辑单独封装起来,把变化部分不变部分隔离,这样 View Model 复用性就都提高了。...RxSwift + MVVM 由于 Cocoa Touch 本身并没有一个统一数据绑定机制,MVVM 几乎是随着 RAC 这个 FRP 框架走近 iOS 开发者视线。...利用 RAC 可以更优雅地实现数据绑定 MVVM 模式。

1.3K81

函数响应式编程框架RxSwift 学习——Observable

最近开始研究RxSwift,网上能查到资料太有限,边学边记录,有不对地方欢迎大家指正。 按照官方自己说法,它是swift版本Rx,是一个提供响应函数式编程框架。...获得Observable 要得到一个Observable有两种方式,一种是RxSwift已经提供了(这里你可能需要引入RxCocoa),一种是自己创建。...信号操作 常用操作符有map,flatMap,subscribe,doOn,retry等等,具体用法在它文档中有具体说明。比如在我demo里,需要根据页码加载列表数据。...(self.dispose) 这段代码里实现了在page发生变化时候自动去请求服务端数据,然后刷新tableview。...throttle保证了事件序列发送频率不会过快,doOn在每次.Next到来之前让我们有机会做些额外处理,页码变化通过flatMap触发API调用,然后把得到数据绑定到每个cell上面。

70910

RxSwift 实战操作【注册登录】

本篇文章是基于RxSwift3.0写,采用是Carthage第三方管理工具导入RxSwift3.0,关于Carthage安装使用,请参考Carthage安装使用。 最终效果 ?...Service文件主要负责一些网络请求,一些数据访问操作。然后供ViewModel使用,由于本次实战没有使用到网络,所以我们只是模拟从本地plist文件中读取用户数据。...UI操作 -> ViewModel -> 改变数据 数据改变 -> ViewModel -> UI刷新 回到我们Service中ValidationService类中,写一个检测username方法...关于上面的validationResultinputEnabled是需要我们自己去定制,这就用到了RxSwift 系列(九) -- 那些难以理解概念文章中UIBindingObserver了。...,把username、passwordrePassword处理结果绑定到一起,返回一个总结果流,这是个Bool值流。

4.8K60

常见客户端架构解析

Model 是问题一个可标示部分。 某个 Model 所有节点都应该处在同样问题等级,将面向问题节点(日历中预约)实现细节(如图形)混在一起是不好。...数据绑定 需要一种绑定机制将 View ViewModel 连接起来(View ViewModel 可以用不同语言编写)。... Model 直接绑定——如果你程序足够简单。...我还是觉得真的要用 MVVM 就必须建立一套绑定机制,可以利用 RxSwift RAC 之类第三方库,或者自己撸一套。 MVP ?...我个人比较倾向于分为 View、Model、ViewModel、Router 这几层,以数据绑定为基础进行通信。 各个层最好都定义一个协议来确认各自职责,可以有一些默认实现。

2K30

今日头条:iOS 架构设计杂谈

ViewModel其实是View数据影子,它神奇之处在于这个影子是可以被改变然后映射到实体上。这个过程中ViewModel抽象出UI数据,然后将这些与UI上属性进行绑定。...虽然我们是想打破MVC,但是苹果UI Kit是基于MVC设计理念,ViewController被赋予了很重要角色,用来控制页面跳转、配置ViewModelView绑定。...初步设计 Login设计要想贯穿MVVM理念大致逻辑是这样,LoginView有两个textFile并分别将它们text部分绑定到usernamepassword上,这样用户在UI上操作,ViewModel...在UI Kit上做绑定并不容易,需要用ReactiveCOcoa或者RxSwift这样框架来将ViewViewModel绑定或者模型反序列化等等。...整个过程中MVVM指导了UI与业务逻辑组件拆分,UI与业务逻辑解耦使得不同APP间登录功能有共用组件,通过丰富iOS通用层组件使绑定、网络请求、数据反序列化变得更容易实现。

1.7K30
领券