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

RxSwift介绍(一)——RxSwift初探

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

3.1K40

译文-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.9K41

    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

    86470

    Swift + RxSwift MVVM 模块化项目实践

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

    3.2K101

    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 跳过满足条件的事件,只要遇见不满足条件的事件,则该事件以及之后的事件(不管是否满足条件)都会发出。

    67670

    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.4K40

    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.4K30

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

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

    2.4K10

    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
    领券