这本书可以让你用 Swift 来编写响应式编程代码。但是到底什么是 RxSwift, 这里有很好的定义:
本文翻译自RxSwift and the awesome things you can do with Reactive Programming — Part I(需要科学上网)
前言 看完本系列前面几篇之后,估计大家也还是有点懵逼,本系列前八篇也都是参考RxSwift官方文档和一些概念做的解读。上几篇文章概念性的东西有点多,一时也是很难全部记住,大家脑子里面知道有这么个概念就行,用的时候,再来查阅一番,慢慢就掌握了。 本篇主要来深入了解一些RxSwift实战中用到的一些重要知识点,这里面有很多自己的理解,所以不免会有一些错误的地方,还请大家多多交流,如有发现错误的地方,欢迎评论。 概念 Rx系列的核心就是Observable Sequence这个相信大家心中已经有所了解了,这里不再
为什么使用RxSwift? 我们编写的代码绝大多数都涉及对外部事件的响应。当用户点击操作时,我们需要编写一个@IBAction事件来响应。我们需要观察通知,以检测键盘何时改变位置。当网络请求响应数据时
RxSwift 是 ReactiveX 系列的 Swift 版本,如果你之前用过 ReactiveCocoa(RAC) 的话,想必对 Functional Reactive Programming(FRP,函数响应式编程)这个概念不会陌生,是的,RxSwift 同样是一个 FRP 框架。值得一提的是,RAC 的README 里有这么几句话:
最近开始研究RxSwift,网上能查到的资料太有限,边学边记录,有不对的地方欢迎大家指正。
上面是经常使用的高阶函数,其实和swift的高阶函数是非常类似的,下面再讲几个有意思的高阶函数
我们在使用订阅者的时候,都是用Sink或者Assign,但是大家有没有想过一个问题,这两种订阅者在第一次连接到发布者的时候,会发送一个无限大(unlimited)的需求(Demand)。
之前介绍了RAC在Objective-C环境下RACSignal信号订阅使用流程、宏定义以及各种信号的操作使用。作为函数式响应编程的代表,就不得不提RxSwift。 在swift环境下,RAC的孪生兄弟RxSwift同样提供了相同的框架使用,并且基于swift语言的优点,RxSwift甚至能够更简洁地开发业务代码。关于RxSwift的优点,大把大把的人在夸。我自己的感受是,虽然学习曲线比较陡峭,学习成本很高,一旦掌握了其开发技巧,收获要比想象中多,值得去学习并实践的框架。 接下来先看一个最常用的例子,swift环境中搭建一个简单的tableView。这里往往需要遵循TableView相关的各种代理方法,下面是使用结构体生成一串简单的数组并放入tableView中显示内容。
RxSwift 是 ReactiveX 家族的重要一员, ReactiveX 是 Reactive Extensions 的缩写,一般简写为 Rx。ReactiveX 官方给Rx的定义是:Rx是一个使用可观察数据流进行异步编程的编程接口。
我们今天就来看看RxSwift RxSwift的导入状语从句:compile-自行_百度,
上一篇我们整体预览了一下RxSwift的魅力这一讲我们接着详细拆分各个细节性的东西
在 swift 环境下开发,网络请求框架最知名就是 Alamofire ,AFN网络请求框架 swift 版本。其强大的功能和多种自定义网络请求,方便性不言而喻。首先来看下在 RxSwift 框架中,其本身也给我们进行的网络请求的封装。如果是在简单的网络请求环境下,可以利用 RxSwift 框架提供的方法来快速实现网络请求响应。 RxSwift框架中,将 URLSession 进行了封装,在 URLSession+Rx.swift文件下,可以找到 RxSwift 为我们提供了四种方法
前段时间身体跟心态都出了点问题,博客也很久没更新了。细心的朋友可能发现我的个人介绍换了,由原先高冷装逼的“谢绝转载”变为略显矫情的“人生谁能不迷茫”了。不知道大家有没有这样的经历,因为一些三言两语难以说清的理由,或者干脆就是无端地对代码产生了一些排斥情绪,下班后看不进书也不想碰代码。我经历了几天这样的日子,挺难受的,好在很快就走出来了。编程本身其实是件有趣的事,但任何事情,一旦将其作为职业,便也失了纯粹,总会有身不由己的时候。做个程序猿,也是如人饮水,冷暖自知。
ReactiveX 最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~ Exhibition 结构 . ├── Controller │ └── LXFViewController.swift // 主视图控制器 ├── Extension │ └── Res
上面的两个问题解决后能大大提升用户体验 解决它们就用到了throttle和debounce
如在OC中使用AFNetworking一般,Swift我们用Alamofire来做网络库.而Moya在Alamofire的基础上又封装了一层:
distinctUntilChanged的作用是,相邻的重复事件不产生新的事件,所以搜索中使用distinctUntilChanged可以保证只有每次触发的搜索都是不同的字符串,也可以保证输入停止后只会触发一次搜索。
双向绑定在我们的开发中有时候也是会用到的,比如MVVM中,ViewModel绑定到一个UI控件,当ViewModel发生变化时,控件跟着变化,而当我们改变控件值时,ViewModel也跟着变化。双向绑定是一种双向的观察-监听者模式。下面就探索几种双向绑定方式。
原文地址:https://www.jianshu.com/p/0e0703466483
作为ReactiveX家族之一的RxSwift在Github截止现在Star:16K.为什么这个框架如此受欢迎,作为函数响应式框架典型代表,底层实现又是如何实现的呢?这一篇文章全面解密
上面一篇章我们对KVO底层有了一定了解!这一篇我们就开始分析RxSwift对KVO的封装,看完这一篇,你估计也会由衷的感慨:底层源码的思路是有相同的
之前的几篇博客算是入门篇,那么这篇就是RxSwift的实战篇。由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。该项目是参考https://github.com/kLike/ZhiHu-RxSwift实现的,最大的实现区别就是,我用的是纯代码实现,还有对网络请求的封装。此外,原项目中存在大量强解包,很容易crash。因此,我是在原来基础上,做了一些优化,虽然在转模型上没有那么优雅,但是比原来的安全。最后,还是非常感谢该作者源码的贡献~
Combine.framework 是Apple在2019 WWDC 上基于Swift推出的函数响应框架(Functional Reactive Programming),支持Apple全平台的操作系统(iOS13+,macOS 10.15+等)。函数式响应框架无论在哪个平台早已流行泛滥,开源的Rx更是实现了各种语言的响应式编程框架。Apple在这个时候推出响应式框架,无疑是对自己护城河的进一步巩固。事实上SwiftUI的数据驱动就是依赖Combine。
以前对MVVM的理解和运用觉得很浅薄,在项目中用处只是对ViewController减负
响应式框架 ReactiveCocoa - ReactiveCocoa受限函数响应式编程激发。不同于使用可变的变量替换和就地修改,RAC提供信号来捕获当前值和将来值(使用介绍 ),不错的例子,入门好教程:ReactiveCocoa入门教程:第一部分。无功可可3.0在MVVM中的应用 ,小码哥:快速让你上手ReactiveCocoa之基础篇。 LoginWithReactiveCocoa - ReactiveCocoa - 登录交互效果的实现。 RxSwift - RxSwift:函数响应式编
现在感觉一切很顺利,但是聪明的我们一定要知道这里落下一个重要的前导因素:什么时候调用了 dispose()
这次打算单独将 tableView 在 RxSwift 框架中的使用整理成一篇文章。tableView 在日常开发中是接触到最多的UI控件之一,在 RxSwift 框架中也帮我们封装好了关于 tableview 的使用方法。自从接触了 RxSwift 的框架,关于 tableview 基本就不用再繁琐地去实现系统提供的各种代理方法,几行代码搞定关于 tableview 的一切。顺便吐槽一下编译器RxSwift代码提示总是无法及时显示,甚至得手写方法名和参数,尤其是 tableview ...
首先,创建一个 textField,使用 addTarget 函数来监听 textField 的 editingChanged 事件。
本文是基于 iOS - RxSwift 项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : ) LXFBiliBili 前言 MVVM的模式中,多出了View
本期是 Swift 编辑组自主整理周报的第五十四期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。
既是可监听序列 也是 观察者,如:field.text/switch.on/segmentedControl选中/datePick选中/…
这个问题我们简单点一句话总结: 你知道什么事CocoaPods吧,我相信只要是做iOS的都知道,Carthage 的属性和作用和我们常用的CocoaPods都是一样的,这样我相信不知道这玩意的同学也就知道了它是用来干嘛的。我们也就不再过多的解释。
此时在Swift中的宏定义那就只能找个文件直接let了,比如Const.swift之类的。
近期开始使用 CocoaPods 组件化开发项目,本文记录个人在创建组件的相关步骤及一些配置,部分代码以Swift为主
面向异步数据流的编程思想。业界比较知名的响应式框架是 ReactiveX 系列。Rx 也有 Swift 版本 — RxSwift。
RxSwift 系列(三) -- Combination Operators 前言 本篇文章将要学习如何将多个Observables组合成一个Observable。 Combination Operators在RxSwift中的实现有五种: startWith merge zip combineLatest switchLatest startWith 在Observable释放元素之前,发射指定的元素序列。更多详情 上面这句话是什么意思呢?翻译成大白话就是在发送一个东西之前,我先发送一个我指定的东西。
为什么要使用Carthage CocoaPods是已存在很长时间的Cocoa依赖管理器, 那么为什么要创建Carthage呢? CoaoaPods是一套整体解决方案,我们在Podfile中指定好我们需
Rx响应式编程的系列框架中,很多朋友对RxJava是最熟悉的,其实它还有很多同胞。比如:RxKotin, RxSwift,RxPhp, RxGo, RxNet, RxJS...,一想到iOS必定对RxSwift很熟悉, Android开发对RxJava却情有独钟!今天就来涨涨RxKotin的姿势!
提高开发效率,降低 Bug 发生率,是我们每个开发所追随的目标。个人认为通过 CocoaPods 实现模块化组件化,积累适合的组件模块,重复利用公用模块,不仅可以提高开发效率并且可以有效的降低 Bug 的发生,另外可以借助Gckit-CLI等脚本工具降低重复无用的代码编写,进一步提高开发效率,降低低级错误的发生,本文以下内容主要讲解个人通过 CocoaPods 结合Gckit-CLI实现开发效率的最大化的一些项目实践
简单的比喻下,Observable像是一个水管,会源源不断的有水冒出来。Subject就像一个水龙头,它可以套在水管上,接受Observable上面的事件。但是作为水龙头,它下面还可以被别的observer给subscribe了。
Observable<T>类是RxSwift框架的基础。其作用就像是一条流水线,让观察者可以实时获取对所有可观察对象所触发的事件,也就是说以此来实现对UI的实时更新或数据、事件等实时处理。 与之前介绍RAC类似,Observable对象所触发的事件有: next,触发时将可观察对象的新值传递给观察者 completed,可观察对象的生命周期正常结束并不再响应触发事件 error,可观察对象出现错误导致其生命周期终止
前言 本篇文章将要学习RxSwift中数学和集合操作符,在RxSwift中包括了: toArray reduce concat toArray 将一个Observable序列转化为一个数组,并转换为一个新的Observable序列发射,然后结束。 let disposeBag = DisposeBag() Observable.of(1,2,3,4,5).toArray().subscribe(onNext: {print($0)}).disposed(by: disposeBag) 运行结果:
之前一直用CocoaPods,这次做编译时间优化时,把某些Pod依赖的库改为了Carthage依赖的,这里记录一下Carthage的使用。
前言 本篇文章将要学习RxSwift中连接操作符。 Connectable Observable在订阅时不发射事件消息,而是仅当调用它们的connect()方法时才发射消息,这样就可以等待所有我们想要的订阅者都已经订阅了以后,再开始发出事件消息,这样能保证我们想要的所有订阅者都能接收到事件消息。其实也就是等大家都就位以后,开始发出消息。 在开始学习Connectable Observable之前,让我们来看一个non-connectable operator: let intervar = Observa
其实,这一篇的题目,我觉得应该是RxSwift对代理的封装,最后还是沿用官方Example的命名吧。
在刚开始接触RxSwift框架时,最感到迷茫的就是着手用该框架写出我们自己的项目。个人感觉,在对RAC与RxSwift的基本原理有了一定认识之后,带着目的与问题去直接动手写代码是最快的学习路径。
RxJava 框架 是 ReactiveX ( Reactive Extensions 响应式编程扩展 ) 在 Java 语言 上的实现 , 该框架 提供了 一系列工具 和 操作符 简化了 异步编程 和 事件处理。
刚学习RxSwift的时候,到github看文档,搜索别人的博客。基本上都是从那些例子讲起,像下面这样,自己再跟着用playground写一篇。
前一篇文章讲述 RxSwift 框架中最重要的类 Observable<T> ,但是其局限性只能作为被订阅者被动接收信号并响应事件。项目中避免不了主动发出信号操作的情况,这时就需要 Subject 类来完成。与之前RAC框架中的 Subject 类功能非常相似,既能攻也能受,是不仅可以成为可观察对象被动接受事件,还可以成为观察者主动发送事件。
领取专属 10元无门槛券
手把手带您无忧上云