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

RxSwift介绍(一)——RxSwift初探

我自己感受是,虽然学习曲线比较陡峭,学习成本很高,一旦掌握了其开发技巧,收获要比想象多,值得去学习并实践框架。 接下来先看一个最常用例子,swift环境搭建一个简单tableView。...在RxSwift,不再需要去挨个遵循tableView各种代理方法,直接上修改后代码 class ViewController: UIViewController { lazy...结构体数据需要被RxSwift包装成了Observable信号。...在RAC中使用组合式销毁来集中管理销毁RACSignal,而在RxSwift与RAC类似的使用到了DisposeBag来实现Observable集中销毁管理。...上手写代码过程,发现RxSwift编译器代码提示在Xcode下实在是不友好,代码提示有时完全失效,只能手动写入其实现方法与参数 现在了解了RxSwift框架基本使用,在RxSwift官方链接也有

3K40

译文-MVVM系列-RxSwift简介及Reactive Programming可以做事情

网上已经有很多文章介绍reactive和RxSwift,也有很多教程教大家怎么处理Rx各种状况(文本后面会放一些相关链接)。...所以这里不打算再写一篇教程去解释streams和observables原理。我想提供一个简单、清晰、不涉及理论知识总结,介绍用RxSwift可以做什么,以及为什么要用RxSwift。...假如你有一个app,需要用户在text field输入他们名字。用「"Hello, \(Name)"」来做问候。很简单需求,对吧。...当用户点击一个按钮,app会检测到这是UIControlEvent.touchUpInside。...如果你用是storyboards,在创建@IBAction时候就会看到.touchUpInside。在这个例子,不需要考虑按钮点击事件。

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

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

本文是基于 iOS - RxSwift 项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : ) LXFBiliBili 前言 MVVM模式,多出了ViewModel...这个角色,将逻辑处理、网络请求等繁杂操作ViewController抽离出来,ViewController得以瘦身。...结合RxSwift架构,我们一般就会在ViewModel定义一个input收集繁杂操作所需信息,通过一个transform方法将input作为参数传入,进而得到一个output供controller...在使用RxSwift开发时会大量使用到这种形式,其中就包括我们网络请求。...结合 iOS - RxSwift 项目实战记录 中所述“MJRefresh在RxSwift使用”,在output定义了一个变量 let refreshStatus = Variable<LXFRefreshStatus

1.8K41

RxSwift 系列(三) -- Combination Operators

RxSwift 系列(三) -- Combination Operators 前言 本篇文章将要学习如何将多个Observables组合成一个Observable。...Combination Operators在RxSwift实现有五种: startWith merge zip combineLatest switchLatest startWith 在Observable...你可以在上面的例子再添加几个.startWith()试试。 merge 将多个Observable组合成单个Observable,并且按照时间顺序发射对应事件。更多详情 ?...subject2.onNext("③") zip 将多个Observable(注意:必须是要成对)组合成单个Observable,当有事件到达时,会在每个序列对应索引上对应元素发出。...(ps:之前版本RxSwift好像最多只能组合8个Observable)更多详情 let disposeBag = DisposeBag() let subject1 = PublishSubject

84770

Swift + RxSwift MVVM 模块化项目实践

本文主要介绍个人在 Swift 项目开发一些实践经验,供大家所借鉴或者探讨。 提高开发效率,降低 Bug 发生率,是我们每个开发所追随目标。...登陆注册模块(Carlisle) 包含用户注册、登陆、找回密码等功能,主要是用户权限相关管理界面,登陆注册模块是参考RxSwift官方 Demo 简单修改完成。...View: 相关自定义 View ViewController: 对应 ViewController ViewModel: 对应 ViewModel /// 界面第一次初始化 let _ =...RxSwift使用 ---- 项目中大部分逻辑处理是借助 RxSwift 实现响应式编程,当界面上每个操作都会转换为一个信号然后通过对信号各种加工网络请求,到返回数据 JSON 解析以及错误对象处理...,通过 RxSwift 一个很简单 Api:withLatestFrom就能实现数据重新加载,而不需要记住各种复杂参数。

3.1K101

RxSwift 系列(五) -- Filtering and Conditional Operators

前言 本篇文章将要学习RxSwift过滤和条件操作符,在RxSwift包括了: filter distinctUntilChanged elementAt single take takeLast...takeWhile takeUntil skip skipWhile skipWhileWithIndex skipUntil filter 在Observable序列只发出满足过滤条件事件。...(onNext: {print($0)}).disposed(by: disposeBag) 用法二:检测Observable序列发射元素里面是否包含多个指定元素,如果有多个或者没有,会报错。...(by: disposeBag) 打印结果: 2 3 takeWhile 只处理满足条件事件。...(by: disposeBag) 打印结果: 3 4 5 6 skipWhile 跳过满足条件事件,只要遇见不满足条件事件,则该事件以及之后事件(不管是否满足条件)都会发出。

66070

RxSwift 系列(六) -- Mathematical and Aggregate Operators

前言 本篇文章将要学习RxSwift数学和集合操作符,在RxSwift包括了: toArray reduce concat toArray 将一个Observable序列转化为一个数组,并转换为一个新...disposed(by: disposeBag) 运行结果: [1, 2, 3, 4, 5] reduce 使用一个初始值和一个操作符,对Observable序列所有元素进行累计操作,并转换成单一事件信号...将两个Observable序列合并成一个Observable序列,当一个Observable序列所有元素成功发射完成之后,才会发射另一个Observable序列元素。...不好理解,举个例子: let disposeBag = DisposeBag() let subject1 = BehaviorSubject(value: "?")...subject2发射这些事件都会被忽略,但是又会接收subject2发射最后一个事件,因此会打印onnext(?)。 致谢 如果发现有错误地方,欢迎评论,感谢!

1.3K120

Swift双向数据绑定

双向绑定在我们开发中有时候也是会用到,比如MVVM,ViewModel绑定到一个UI控件,当ViewModel发生变化时,控件跟着变化,而当我们改变控件值时,ViewModel也跟着变化。...[Data binding] RxSwift 使用RxSwift可以很简单实现双向绑定,我们定义一个ViewModel: struct UserViewModel { var userName...userModel.userName.asObservable().bind(to: textField.rx.text).disposed(by: disposeBag) textField.rx.text.orEmpty.bind...(to: userModel.userName).disposed(by: disposeBag) 此时就实现了双向绑定,我们改变其中一个值,另外一个值也会跟着改变。...也可以使用RxSwift示例代码Operators.swift里面实现Operator ""来做双向绑定,这种方法更加简洁 _= textField.rx.textInput self.userModel.userName

5.2K40

RxSwift介绍(四)——实际应用之常用UI控件

在刚开始接触RxSwift框架时,最感到迷茫就是着手用该框架写出我们自己项目。个人感觉,在对RAC与RxSwift基本原理有了一定认识之后,带着目的与问题去直接动手写代码是最快学习路径。...这篇先探究一下常用UI控件在RxSwift框架,是怎样运作并最终实现想要效果 首先是最基本 lable、textField 与 button 。...//分别初始化一个 button、一个 lable、一个textField,以及一个Rx垃圾回收包 DisposeBag let disposeBag = DisposeBag()...thirdBtn.backgroundColor = UIColor.red }).disposed(by: disposeBag) } 上面在上面代码,drive() 方法与...比如根据观察者属性变化同时改变多个UI控件状态 而且,在 button 按钮点击订阅方法,改变了 button 自己属性,那么在订阅方法添加 [weak self] 就可以防止循环引用出现。

1.3K30

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

前言 之前几篇博客算是入门篇,那么这篇就是RxSwift实战篇。由于对RxSwift认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。...该项目是参考https://github.com/kLike/ZhiHu-RxSwift实现,最大实现区别就是,我用是纯代码实现,还有对网络请求封装。...最后,还是非常感谢该作者源码贡献~ 框架介绍 框架 说明 Moya 对Alamofire封装 Moya/RxSwift 针对RxSwiftMoya扩展 Kingfisher 喵神网络图片加载库...方法,监听section变化,刷新条件是:当滚动到最后一个section第一个元素时,加载更多数据 func tableView(_ tableView: UITableView, willDisplay...那么针对上拉刷新,我是这样封装,在我MPApiService服务层,定义了如下方法: func loadMoreHomeNewsList(date: String) -> Observable<MPStoryListModel

2.3K10

RxSwift 与 BLE 实战——VisualBlue

今天就介绍一下前段时间写一个 demo,主要功能是扫描附近蓝牙设备,显示相关信息,点击后可以连接设备,并获取更多信息。对 RxSwift 及 BLE 感兴趣同学可以看看,或有所得。...我曾一度想着用 RxSwift 去包装一下 CoreBluetooth,后来发现已经有人做了这件事了,于是就想先写个 demo 看看靠不靠谱。Demo 在这里。...扫描设备整个流程大致是这样: 筛选蓝牙状态,将除.PoweredOn之外状态过滤掉 扫描设备 筛选设备,将已出现过设备过滤掉 将扫描到新设备添加到设备列表 用设备列表构建一个dataSource...,并与tableView绑定 将资源添加到disposeBag,以待统一回收处理 这个过程用 Rx 风格来写大概是这样: func bindDataSource() { manager.rx_state...subscribeNext { self.tableView.deselectRowAtIndexPath($0, animated: true) } .addDisposableTo(disposeBag

1.1K20
领券