之前介绍了RAC在Objective-C环境下RACSignal信号订阅使用流程、宏定义以及各种信号的操作使用。作为函数式响应编程的代表,就不得不提RxSwift。 在swift环境下,RAC的孪生兄弟RxSwift同样提供了相同的框架使用,并且基于swift语言的优点,RxSwift甚至能够更简洁地开发业务代码。关于RxSwift的优点,大把大把的人在夸。我自己的感受是,虽然学习曲线比较陡峭,学习成本很高,一旦掌握了其开发技巧,收获要比想象中多,值得去学习并实践的框架。 接下来先看一个最常用的例子,swift环境中搭建一个简单的tableView。这里往往需要遵循TableView相关的各种代理方法,下面是使用结构体生成一串简单的数组并放入tableView中显示内容。
本文翻译自RxSwift and the awesome things you can do with Reactive Programming — Part I(需要科学上网)
ReactiveX 最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~ Exhibition 结构 . ├── Controller │ └── LXFViewController.swift // 主视图控制器 ├── Extension │ └── Res
本文是基于 iOS - RxSwift 项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : ) LXFBiliBili 前言 MVVM的模式中,多出了View
distinctUntilChanged的作用是,相邻的重复事件不产生新的事件,所以搜索中使用distinctUntilChanged可以保证只有每次触发的搜索都是不同的字符串,也可以保证输入停止后只会触发一次搜索。
前言 本篇文章将要学习RxSwift中过滤和条件操作符,在RxSwift中包括了: filter distinctUntilChanged elementAt single take takeLast takeWhile takeUntil skip skipWhile skipWhileWithIndex skipUntil filter 在Observable序列中只发出满足过滤条件的事件。 let disposeBag = DisposeBag() Observable.of(1,2,3,4
前言 看完本系列前面几篇之后,估计大家也还是有点懵逼,本系列前八篇也都是参考RxSwift官方文档和一些概念做的解读。上几篇文章概念性的东西有点多,一时也是很难全部记住,大家脑子里面知道有这么个概念就行,用的时候,再来查阅一番,慢慢就掌握了。 本篇主要来深入了解一些RxSwift实战中用到的一些重要知识点,这里面有很多自己的理解,所以不免会有一些错误的地方,还请大家多多交流,如有发现错误的地方,欢迎评论。 概念 Rx系列的核心就是Observable Sequence这个相信大家心中已经有所了解了,这里不再
前言 本篇文章将要学习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) 运行结果:
RxSwift 系列(三) -- Combination Operators 前言 本篇文章将要学习如何将多个Observables组合成一个Observable。 Combination Operators在RxSwift中的实现有五种: startWith merge zip combineLatest switchLatest startWith 在Observable释放元素之前,发射指定的元素序列。更多详情 上面这句话是什么意思呢?翻译成大白话就是在发送一个东西之前,我先发送一个我指定的东西。
提高开发效率,降低 Bug 发生率,是我们每个开发所追随的目标。个人认为通过 CocoaPods 实现模块化组件化,积累适合的组件模块,重复利用公用模块,不仅可以提高开发效率并且可以有效的降低 Bug 的发生,另外可以借助Gckit-CLI等脚本工具降低重复无用的代码编写,进一步提高开发效率,降低低级错误的发生,本文以下内容主要讲解个人通过 CocoaPods 结合Gckit-CLI实现开发效率的最大化的一些项目实践
Observable<T>类是RxSwift框架的基础。其作用就像是一条流水线,让观察者可以实时获取对所有可观察对象所触发的事件,也就是说以此来实现对UI的实时更新或数据、事件等实时处理。 与之前介绍RAC类似,Observable对象所触发的事件有: next,触发时将可观察对象的新值传递给观察者 completed,可观察对象的生命周期正常结束并不再响应触发事件 error,可观察对象出现错误导致其生命周期终止
在刚开始接触RxSwift框架时,最感到迷茫的就是着手用该框架写出我们自己的项目。个人感觉,在对RAC与RxSwift的基本原理有了一定认识之后,带着目的与问题去直接动手写代码是最快的学习路径。
双向绑定在我们的开发中有时候也是会用到的,比如MVVM中,ViewModel绑定到一个UI控件,当ViewModel发生变化时,控件跟着变化,而当我们改变控件值时,ViewModel也跟着变化。双向绑定是一种双向的观察-监听者模式。下面就探索几种双向绑定方式。
之前的几篇博客算是入门篇,那么这篇就是RxSwift的实战篇。由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。该项目是参考https://github.com/kLike/ZhiHu-RxSwift实现的,最大的实现区别就是,我用的是纯代码实现,还有对网络请求的封装。此外,原项目中存在大量强解包,很容易crash。因此,我是在原来基础上,做了一些优化,虽然在转模型上没有那么优雅,但是比原来的安全。最后,还是非常感谢该作者源码的贡献~
最近发生了挺多事,也没什么时间更新博客,心中颇有点负疚感。今天就介绍一下前段时间写的一个 demo,主要功能是扫描附近的蓝牙设备,显示相关信息,点击后可以连接设备,并获取更多信息。对 RxSwift 及 BLE 感兴趣的同学可以看看,或有所得。
前言 本篇文章我们将学习RxSwift中的错误处理,包括: catchErrorJustReturn catchError retry retry(_:) catchErrorJustReturn 遇
PublishSubject 即是一个被观察者(Observable)也是一个观察者 (Observer)
这次打算单独将 tableView 在 RxSwift 框架中的使用整理成一篇文章。tableView 在日常开发中是接触到最多的UI控件之一,在 RxSwift 框架中也帮我们封装好了关于 tableview 的使用方法。自从接触了 RxSwift 的框架,关于 tableview 基本就不用再繁琐地去实现系统提供的各种代理方法,几行代码搞定关于 tableview 的一切。顺便吐槽一下编译器RxSwift代码提示总是无法及时显示,甚至得手写方法名和参数,尤其是 tableview ...
RxSwift Subject共分为AsyncSubject、BehaviorSubject、PublishSubject、ReplaySubject。
既是可监听序列 也是 观察者,如:field.text/switch.on/segmentedControl选中/datePick选中/…
如在OC中使用AFNetworking一般,Swift我们用Alamofire来做网络库.而Moya在Alamofire的基础上又封装了一层:
从今天起,我把自己学习RxSwift的官方Example时的感想写下来,或许对有疑惑的人有帮助吧。传送门
前言 本篇文章将要学习RxSwift中四种转换操作符: map flatMap flatMapLatest scan map 通过使用一个闭包函数将原来的Observable序列转换为一个新的Obse
此时在Swift中的宏定义那就只能找个文件直接let了,比如Const.swift之类的。
前言 看了前面的文章,相信很多同学还不知道RxSwift该怎么使用,这篇文件将带领大家一起写一个 注册登录(ps:本例子采用MVVM)的例子进行实战。本篇文章是基于RxSwift3.0写的,采用的是C
这一篇,是一个仿Github注册的表单页面。官方针对这个例子,介绍了用RxSwift实现MVVM,一个是使用Driver 序列(针对UI界面的),另一个是Observable 序列。所以可以总结的知识点如下:
前段时间身体跟心态都出了点问题,博客也很久没更新了。细心的朋友可能发现我的个人介绍换了,由原先高冷装逼的“谢绝转载”变为略显矫情的“人生谁能不迷茫”了。不知道大家有没有这样的经历,因为一些三言两语难以说清的理由,或者干脆就是无端地对代码产生了一些排斥情绪,下班后看不进书也不想碰代码。我经历了几天这样的日子,挺难受的,好在很快就走出来了。编程本身其实是件有趣的事,但任何事情,一旦将其作为职业,便也失了纯粹,总会有身不由己的时候。做个程序猿,也是如人饮水,冷暖自知。
为什么使用RxSwift? 我们编写的代码绝大多数都涉及对外部事件的响应。当用户点击操作时,我们需要编写一个@IBAction事件来响应。我们需要观察通知,以检测键盘何时改变位置。当网络请求响应数据时
以前对MVVM的理解和运用觉得很浅薄,在项目中用处只是对ViewController减负
上面一篇章我们对KVO底层有了一定了解!这一篇我们就开始分析RxSwift对KVO的封装,看完这一篇,你估计也会由衷的感慨:底层源码的思路是有相同的
解决的方案有很多,不过我比较习惯使用 MoyaMapper ,不仅可以解决上述问题,还提供了多种模型转换、数据互转、多种数据类型任意存储的便捷方法。掌控Moya的网络请求、数据解析与缓存简直易如反掌。
其实,这一篇的题目,我觉得应该是RxSwift对代理的封装,最后还是沿用官方Example的命名吧。
https://beeth0ven.github.io/RxSwift-Chinese-Documentation/content/more_demo/calculator.html
RxSwift是Swift的一套响应式编程框架,如同OC的RAC。响应式编程的核心如下图:(来源于中文文档)。
官方建议总是使用 .addDisposableTo(disposeBag) 即使对于简单绑定来说那不是必要的。
而MVVM这种新的代码组织方式就可以解决这些问题,本文就MVVM的架构设计做个简单的个人总结。
本文介绍了如何使用 Reactive Programming 的方式在 Swift 中实现信号量,通过使用 Signal 和 Disposable 两个概念来模拟实现信号量,以解决在多线程环境下对共享资源的访问控制问题。同时,也介绍了一种使用 Combine 框架来实现线程安全的信号量,以及如何使用 Combine 来实现一个类似于 RxSwift 的响应式编程库。
MVVM 这个模式可能大家耳朵都听出茧了,但却没有多少人真正在项目中应用过,毕竟 Cocoa Touch 整体是基于“MVC”的,没有 Controller 根本干不了活。而且这年头虽然各种 buzz word 盛嚣尘上,但不同领域的人对它们都有不同的理解,看多了说多了自己都有点烦。我今天也不想说到底什么是 MVC,什么是 MVVM,这些我之前在这篇文章有提过一点。如果大家真的对它们的原始定义感兴趣,可以看看这篇 MVC 论文,四人帮的《设计模式》也对 MVC 有所阐述;MVVM 的话我们知道它是微软在推出 WPF 时提出的,可以看看 MSDN 的相关博客。
关键时刻,第一时间送达! 📷 📷 2017年又快过去了,忙了一年感觉没啥收获,感觉是不是应该写点啥,想了好久没想出要写什么。下半年因为工作的原因,狗狗也没养了,吉他上也积满了灰尘,兴致勃勃的学习素描,
public class Observable<Element> : ObservableType ---->
不同于国外,StoryBoard从面世到如今饱受国内开发者的质疑,质疑的理由很多,什么不利于多人协作啊,隐藏了UI细节啊,出问题不容易测试,降低执行效率啊等等。此文就是针对这些问题的举例和剖析。
国庆的时候写了个小工具来将 JSON 转化成 Model,也算是我的第一个 Mac App,今天重构了下,顺便跟大家分享下 Mac 开发有多不方便……
完整项目 GSD_WeiXin 高仿微信 v2ex - v2ex的客户端,新闻,论坛。 V2ex-Swift - 用Swift写的V2EX客户端。 iBBS-Swift - “新手开源一个用Swift(2.0)写的论坛客户端”。BBS 服务端。 wikipedia-ios - 维基百科-ios客户端。 jetstream-ios - 一款Uber的MVC框架,它同时提供了多用户实时通讯支持,一旦启动JetStream后端服务,通过WebSocket协议可以分钟建立多用户实时通讯应用。
提起 C++ 这门已有 38 年历史的语言,大家或多或少都会有一定的了解,“面向对象”、“过程式编程”这些词汇立刻在脑海中浮现出来。“高性能”、“高复杂性”这两大标签,也伴随着 C++ 多年来一直在众多语言中独树一帜。 而我们在实际项目的开发过程中发现,同一个功能,综合考虑前期开发、后期 bug 与 UI 还原等阶段的人力投入,使用 Web 技术栈 来实现前端页面,研发效率大约是 平台原生开发 的 2 到 3 倍。这其中开发效率的差异,让我们好奇去深入探究其中的原因。 近年来崛起的前端三大框架 Angul
上面的两个问题解决后能大大提升用户体验 解决它们就用到了throttle和debounce
这本书可以让你用 Swift 来编写响应式编程代码。但是到底什么是 RxSwift, 这里有很好的定义:
大家好,我是 ConardLi, 拖了这么久,JS 生态圈最权威的调查报告 state-of-js 终于是出来了 ...
RxSwift 是 ReactiveX 家族的重要一员, ReactiveX 是 Reactive Extensions 的缩写,一般简写为 Rx。ReactiveX 官方给Rx的定义是:Rx是一个使用可观察数据流进行异步编程的编程接口。
在日常运维工作中,大部分企业都会搭建自己的可视化监控大屏,但是对于小型企业或者是个人玩家来说这样做的成本和难度会大大提高,下面我就分享一个Shell脚本监控Linux服务器的CPU、磁盘、内存。
在 swift 环境下开发,网络请求框架最知名就是 Alamofire ,AFN网络请求框架 swift 版本。其强大的功能和多种自定义网络请求,方便性不言而喻。首先来看下在 RxSwift 框架中,其本身也给我们进行的网络请求的封装。如果是在简单的网络请求环境下,可以利用 RxSwift 框架提供的方法来快速实现网络请求响应。 RxSwift框架中,将 URLSession 进行了封装,在 URLSession+Rx.swift文件下,可以找到 RxSwift 为我们提供了四种方法
领取专属 10元无门槛券
手把手带您无忧上云