首页
学习
活动
专区
圈层
工具
发布

MVVM+RxSwift

前言 以前对MVVM的理解和运用觉得很浅薄,在项目中用处只是对ViewController减负 没有做数据与View的绑定,没有做到真正的数据驱动视图 没有体现出MVVM易于测试的好处 对于RxSwift...RxSwift有一定的了解和使用。...ViewController和View ViewController的主要作用是管理视图的生命周期,绑定数据和View的关系,数据绑定的实现主要是通过RxDataSources+RxSwift来实现的,...Navigator Navigator是从ViewController剥离出来用来控制视图跳转 上代码 下图是上述目录结构中一个页面 先分析下界面上的输入和输出 输入:进入页面时的请求,重命名按钮点击...因为在某些业务场景下我们需要保存它,比如在网络请求错误的时候,我希望页面还会继续显示之前有数据的状态,这时候我们就可以在网络请求错误的序列中塞入我们之前保存的数据,这样页面还是显示原样,还有你注意没有这个属性是

2K20

如何使用Vue.js和Axios来显示API中的数据

Vue.js非常适合使用这些类型的API。 在本教程中,您将创建一个使用Cryptocompare API的Vue应用程序来显示两个主要加密货币的当前价格:比特币和Etherium。...熟悉JSON数据格式,您可以在JavaScript中了解如何使用JSON来了解更多信息。 熟悉向API发出请求。 有关使用API​​的综合教程,请参阅如何在Python3中使用Web API 。...第4步 - 从API获取数据 现在是时候用来自cryptocompare API的实时数据替换我们的模拟数据,以美元和欧元的形式在网页上显示比特币和以太坊的价格。...结论 在少于五十行中,您只使用三个工具创建了一个耗用API的应用程序:Vue.js,Axios和Cryptocompare API。...您学习了如何在页面上显示数据,迭代结果以及将静态数据替换为API的结果。 既然您已经理解了基础知识,那么您可以将其他功能添加到您的应用程序中。

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

    Swift + RxSwift MVVM 模块化项目实践

    : 接口 Api Model: 实例 Model Module: 模块相关管理类,包含路由注册和提供别的模块访问的管理类 View: 相关自定义的 View ViewController: 对应的 ViewController...RxSwift的使用 ---- 项目中大部分的逻辑处理是借助 RxSwift 实现的响应式编程,当界面上的每个操作都会转换为一个信号然后通过对信号的各种加工网络请求,到返回的数据 JSON 解析以及错误对象的处理...,需要界面上展示网络错误,并且显示重新加载的按钮,或者是如果在调用相机获取授权的时用户没有授权的时候,需要提示给用户授权相关的信息,等等这些逻辑处理都可以通过流的形式处理,在处理用户网络错误加载失败的时候...,通过 RxSwift 的一个很简单的 Api:withLatestFrom就能实现数据重新加载,而不需要记住各种复杂的参数。...根据错误码的不同进行不同的错误逻辑处理,如下代码所示 /** 通过 mikerError 显示错误信息202024:请登录后再操作 - parameter error: */

    3.7K101

    RxSwift介绍(一)——RxSwift初探

    这里往往需要遵循TableView相关的各种代理方法,下面是使用结构体生成一串简单的数组并放入tableView中显示内容。...tableView在swift环境下的实现 遵循的tableView代理方法还是一如既往的繁多 接下来,在使用RxSwift框架下改造上面的tableView,来感受下RxSwift的强大。...在RxSwift中,不再需要去挨个遵循tableView的各种代理方法,直接上修改后的代码 class ViewController: UIViewController { lazy...在RAC中使用的组合式销毁来集中管理销毁RACSignal,而在RxSwift中与RAC类似的使用到了DisposeBag来实现Observable的集中销毁管理。...上手写代码的过程中,发现RxSwift的编译器代码提示在Xcode下实在是不友好,代码提示有时完全失效,只能手动写入其实现的方法与参数 现在了解了RxSwift框架的基本使用,在RxSwift的官方链接中也有

    3.6K40

    iOS - RxSwift 项目实战记录

    的使用 Moya是基于Alamofire的网络请求库,这里我使用了Moya/Swift,它在Moya的基础上添加了对RxSwift的接口支持。...RxDataSources 如果你想用传统的方式也行,不过这就失去了使用RxSwift的意义。...ViewModel的规范 我们知道MVVM思想就是将原本在ViewController的视图显示逻辑、验证逻辑、网络请求等代码存放于ViewModel中,让我们手中的ViewController瘦身。...和Output定义别名,以示区分,如:你这个viewModel的用于请求首页模块相关联的,则可以命名为:HomeInput 和 HomeOutput 我们可以丰富我们的 Input 和 Output 。...,不然会不方便阅读和理解 } } 接着我们在ViewController中初始化我们的input,通过transform得到output,然后将我们output中的sections序列绑定tableView

    3.8K41

    RxSwift + MJRefresh 打造自动处理刷新控件状态

    本文是基于 iOS - RxSwift 项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : ) LXFBiliBili 前言 MVVM的模式中,多出了ViewModel...这个角色,将逻辑处理、网络请求等繁杂操作中ViewController中抽离出来,ViewController得以瘦身。...在使用RxSwift开发时会大量的使用到这种形式,其中就包括我们的网络请求。...结合 iOS - RxSwift 项目实战记录 中所述的“MJRefresh在RxSwift中的使用”,在output中定义了一个变量 let refreshStatus = Variable的重点。 重点 刷新的状态无非也就那么几种,下拉重载数据,上拉加载更多,请求完成时结束下拉或上拉等等。。。那我们何必要在每个controller中再去管理这等琐事??

    2.3K41

    聊聊iOS开发之MVVM的架构设计

    MVC/MVVM都是就是设计模式的一种。 在MVC的架构中,Model持有数据,View显示与用户交互的界面,而ViewController调解Model和View之间的交互。...对于一个界面来说,有时候View和ViewModel往往不止一个,MVVM也可以组合使用: MVVM 的基本概念 - 在MVVM 中,view 和 view controller正式联系在一起,我们把它们视为一个组件...,ViewController的登录按钮被点击时,调用viewModel上的login方法,同时ViewController通过KVO的方法监听executing、error、responseObject...视图控制器通过使用viewModel上的banners和dataSource数组中的对象来配置表格视图(tableView)的tableViewHeader和cell。...一般来说,viewController可以带一个 viewModel,那如果出现 Cell时怎么办,Cell里又包含了按钮,按钮又需要数据请求又怎么处理?

    9.2K92

    iOS开发常用之完整项目加、文章

    DeckRocket - 在相同WiFi网络环境内,通过iPhone控制并播放Mac中的PDF文档。...-标哥的技术博客 XCFApp-1 -高仿下厨房应用,Objective-C中,Xcode7.2,数据通过查尔斯抓的,有接口也有本地数据说明:关于代码被清空,会用GIT中的你肯定明白,教程 XCFApp...用JSON构建API的标准指南 - 用JSON构建API的标准指南。 RxSwift入坑手册 - RxSwift入坑手册。...iOS创建半透明ViewController - iOS创建半透明ViewController。 Xcode使用技巧 - SwiftGG交流分享:Xcode使用技巧。...UIView的+红点实现底部UITabBarItem和控件的右上角显示和隐藏红点/数字的需求 - 使用GCD实现和封装分组并行网络请求 - 使用GCD实现和封装分组并行网络请求。

    3K21

    iOS函数响应式编程以及ReactiveCocoa的使用

    打算在项目中大面积使用RAC来开发,所以整理一些常用的实践范例和比较完整的api说明方便开发时随时查阅 声明式编程泛型Declarative programming 函数反应式编程是声明式编程的子编程范式之一...:动态信号,使用一个 block - 来实现订阅行为,我们在使用 RACSignal 的 +createSignal: 方法时创建的就是该类的实例; RACErrorSignal :错误信号,用来实现...RACMulticastConnection 用于当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以使用这个类处理。...retry重试 :只要失败,就会重新执行创建信号中的block,直到成功. replay重放:当一个信号被多次订阅,反复播放内容 throttle节流:当某个信号发送比较频繁时,可以使用节流,在某一段时间不发送信号内容.../2016/07/22/ReactiveCocoa和RXSwift速查表/ ReactiveCocoa中潜在的内存泄漏及解决方案http://tech.meituan.com/potential-memory-leak-in-reactivecocoa.html

    2.3K11

    2021年一定要关注的技术趋势和选型建议

    识别架构耦合上下文 在软件架构中,如何在微服务、组件、API 网关、集成中心、前端等等之间确定一个适当的耦合级别,是几乎每次会议都会讨论的话题。...同时计算的结果仍然以加密的形式存在,并且稍后可以对其进行解密和显示。虽然同态加密问题早在 1978 年就被提出来了,但直到 2009 年才出现解决方案。...Sentry(采纳) Sentry 已经成了许多团队的默认选项。Sentry 提供了一些便利的功能,比如错误分组,以及使用适当的参数定义错误过滤规则,可以极大地帮助处理来自终端用户设备的大量错误。...通过将 Sentry 集成到持续交付流水线中,你可以上传源码映射文件,从而更高效地调试错误,并能很容易追踪到是在哪个版本的软件中产生了这些错误。...Kotlin Flow 是一种基于协程的响应式流的实现。与 RxJava 不同的是,流是 Kotlin 原生的 API,与熟悉的序列 API 类似,包括 map 和 filter 方法。

    85530

    如何使用 Swift 开发 iOS PDF 查看器或编辑器

    legal.txt - 法律和版权申明。在 Swift 中开发 iOS PDF 查看器或编辑器在此部分,我们分步说明了如何在 Swift 中开发 iOS 应用程序。...这将帮助您快速学会使用 ComPDFKit PDF SDK,完成所有步骤,您将可以获得一个简单的应用程序,可以显示指定PDF文件的内容。在本篇文章中,我们将以 Xcode 14.0.1 为例。...使用快捷方式“Command_B”构建项目。如果没有报错,则说明配置正确,可以进行下一步。如果报错,需要检查错误原因。如果您无法识别错误,您可以联系我们的技术团队来解决问题。...否则,请查看本文末尾的“故障排除”部分或查看控制台中的错误日志,以快速识别并解决问题。编译并运行该项目。第 5 步:显示 PDF 文档准备一个测试PDF文件,将其拖放到新创建的pdfView项目中。...如果无法显示PDF内容,请检查创建的NSURL和对象是否为空,或者创建的CPDFView的大小是否为零。它们不应该是空的。如果文件路径中有特殊字符,你的 NSURL 将为 nil。

    1.7K00

    走进 RxSwift 之观察者模式

    RxSwift简介和吐槽 RxSwift 是 ReactiveX 系列的 Swift 版本,如果你之前用过 ReactiveCocoa(RAC) 的话,想必对 Functional Reactive Programming...RxSwift 内部还是有各种类各种继承,当然也有各种同步机制:自旋锁、递归锁、原子操作……说好的 functional 呢?只有暴露给使用者的 API 是functional 么?...Observable 和 Observer RxSwift 项目内部有个 Rx.playground,在介绍页面上有这么一句话: The key to understanding RxSwift is...然后将实现类声明为范型类,再将传入的范型名命名为 E(如 typealias E = Element) 在接受范型参数的地方这样使用: func demo中没有抽象类和抽象方法的概念,不能在函数前加 abstract 强制子类重写该方法,只能用这种不重写就终止的方式来模拟抽象方法。

    1.5K20

    有态度的前沿技术解析,第24期技术雷达正式发布!

    识别架构耦合上下文 在软件架构中,如何在微服务、组件、API网关、集成中心、前端等等之间确定一个适当的耦合级别,是几乎每次会议都会讨论的话题。...同时计算的结果仍然以加密的形式存在,并且稍后可以对其进行解密和显示。虽然同态加密问题早在1978年就被提出来了,但直到2009年才出现解决方案。...Sentry 采纳 Sentry已经成了许多团队的默认选项。Sentry提供了一些便利的功能,比如错误分组,以及使用适当的参数定义错误过滤规则,可以极大地帮助处理来自终端用户设备的大量错误。...通过将Sentry集成到持续交付流水线中,你可以上传源码映射文件,从而更高效地调试错误,并能很容易追踪到是在哪个版本的软件中产生了这些错误。...与RxJava不同的是,流是Kotlin原生的API,与熟悉的序列API类似,包括map和filter方法。跟序列一样,流是“冷”的,这就意味着只有当需要使用的时候才构造序列的值。

    1.2K60

    Klee:用 C++ 实现数据驱动开发

    直到读了 Vue.js 的源码后,才理解了依赖关系是如何在运行时收集维护的。...Label 是 Klee 框架内置提供的文本显示组件,构造时的参数支持同时传入字符串、属性字符串、字体、颜色,且参数允许任意增减或调换顺序,例如这样也是 OK 的: Label(GetDisplayName...RxSwift 单输入源代码简洁清晰,但多输入源的场景需要开发者使用各种操作符来连接生成新的序列,学习门槛稍高。...RxSwift 是数据绑定控件,因此需要开发者手动指定 disposeBag 来控制监听者的生命周期,且回调函数里一个错误的 self 捕获就可能导致灾难性的后果。...实践表明,开发同一个功能,代码量大约只有传统开发方式的 60%,且具备更好的可读性和可复用性。 待框架经过更大规模的实际检验,同时 API 保持稳定后,再进行对外开源。

    2.7K30

    关于 RxSwift 的一点理解

    但是到底什么是 RxSwift, 这里有很好的定义: RxSwift 是由可被观察的事件的异步队列和可操作的功能性的运算符组成的库,并且他可以由调度者通过参数的方式进行调度...本书的目标就是带你逐步的去理解 RxSwift 的 API,并且去运用每一个 API,然后把它们运用到实际的 iOSApp 中。...你将会从 RxSwift 中最基本的功能开始,然后循序渐进的由中级到高级。花一些时间去广泛的理解里面的概念,这样以来读完本书后你就会精通 RxSwift 额思想和使用。...和键盘的弹出和收起动画之间的关系 从网上下载大图片 往硬盘里面存数据 播放视频 以上的所有东西看似是发生在同一时刻其实真的是吗?...# UIKit 中的一些异步的 API 苹果在 iOS SDK 中提供了很多 api,帮助你编写异步代码。你在你的项目中使用过这些但是可能还没有考虑过它们,因为它们是编写移动应用程序的基础。

    79240

    View Controller编程指南

    在该root view中,您添加了需要显示内容的view。 图显示了ViewController和View之间的内置关系。...例如,您可以使用该方法删除缓存的数据。 发生内存不足情况时,释放尽可能多的内存非常重要。 消耗太多内存的应用程序可能会被系统彻底终止以恢复内存。...在iOS中,当ViewController的特性改变时,会发生显示细腻的变化。特征是描述整体环境的属性,例如显示比例。...例如,UIKit中的UIImagePickerController类显示用于捕获图片和视频以及访问用户相机的标准界面。...而不是使用单独的ViewController来管理不同屏幕上的内容,而是使用内置的适配性支持来响应ViewController中的大小和大小等级更改。

    1.9K20

    干货 | 深入浅出Apple响应式框架Combine

    Apple目前内置了50多种Operators,尽管这样,它仍然比Rxswift少,这里有一份Combine和RxSwift的操作符对比RxSwift to Combine Cheatsheet。...我们通过URLSession内置的dataPublisher发送网络请求解析来说明用法,目的是为了说明Combine中的异步API以及在异步API中如何使用Operator。代码示例如下图: ?...Apple提供了print()和HandleEvents()两种API来控制输出,方便开发者调试。 通过举例来说明: ?...来给定一个简单的验证规则: 1)当用户输入登录名称大于等于6位; 2)密码和确认密码相等并且至少为6位; 3)用户同意隐私协议; 同时满足上述三个条件时注册按钮才点击可用,我们使用Combine来实现注册校验逻辑...四、性能表现 RxSwift已在开源社区广泛应用,Apple本身推出的Combine的性能表现如何呢?我们使用Will Combine kill RxSwift?

    5.4K31
    领券