RXSwift01
//创建 Observable 序列
func createObservable(){
/*
let observable = Observable<Int>.just(5)
let observableStr = Observable.of("A","B","C")
let observableArr = Observable.from(["A","B","C"])
let observableEmpty = Observable<Int>.empty()
let observareNaver = Observable<Int>.never()
let observareError = Observable<Int>.error(NSError.init())
let observareRange = Observable.range(start: 1, count: 5)
let observareRange1 = Observable.of(1,2,3,4,5)
let observareGen = Observable.generate(initialState: 0, condition: {$0 <= 10}, iterate: {$0 + 2}) print(observable,observableStr,observableArr,observableEmpty,
observareError,observareNaver,observareRange,observareRange1,observareGen)
*/
let observareCreate = Observable<String>.create { (observer) -> Disposable in
//观察者发出事件
observer.onNext("rxswift.com")
//发出完成事件
observer.onCompleted()
//因为一个订阅行为会有一个Disposable类型的返回值,所以在结尾一定要returen一个Disposable
return Disposables.create()
}
observareCreate.subscribe { (str) in
print(str)
}.dispose()
//工厂模式
var isOdd = true
let factory:Observable<Int> = Observable.deferred { () -> Observable<Int> in
isOdd = !isOdd
if isOdd {
return Observable.of(,,,)
}else{
return Observable.of(,,,)
}
}
factory.subscribe { (result) in
print(result)
}.dispose()
factory.subscribe { (event) in
print(event)
}.dispose()
//定时器唯一性
let obervableTime = Observable<Int>.timer(, scheduler: MainScheduler.instance)
print(obervableTime.subscribe { (event) in
print(event)
}) let observableStr = Observable.of("A","B","C")
//使用subscription常量存储这个订阅方法
let subscription = observableStr.subscribe { (element) in
print(element)
}
//销毁订阅
subscription.dispose() let disposeBag = DisposeBag.init()
let obserable = Observable.of("A","B","C")
obserable.subscribe { (event) in
print(event)
}.disposed(by: disposeBag) //每个一秒发出一个索引 map ---bind 进行绑定
let obserable1 = Observable<Int>.interval(, scheduler: MainScheduler.instance)
obserable1.map{"当前索引:\($0)"}.bind { [weak self](text) in
self?.label.text = text
}.disposed(by: disposeBag) let obserable2:AnyObserver<String> = AnyObserver.init { (event) in
switch event{
case .next(let data):
print(data)
case .error(let error):
print(error)
case .completed:
print("Completable")
} }
obserable.subscribe(obserable2).dispose() let obserable3:AnyObserver<String> = AnyObserver.init { (event) in
switch event {
case .next(let text):
self.label.text = text
default:
break
}
}
let obserable4 = Observable<Int>.interval(, scheduler: MainScheduler.instance)
obserable4.map{"当前索引:\($0)"}.bind(to: obserable3).disposed(by: disposeBag) //观察者模式
let observer3:Binder<String> = Binder.init(label) { (view, text) in
//刷新UI
view.text = text
}
let observable = Observable<Int>.interval(, scheduler: MainScheduler.instance)
observable.map{
"当前索引:\($0)"
}.bind(to: observer3)
.disposed(by: disposeBag) let observableLbl = Observable<Int>.interval(, scheduler: MainScheduler.instance)
//RXSwift绑定属性
observableLbl.map {"当前索引:\($0)"}
.bind(to: label.rx.text)
.disposed(by: disposeBag)
}
RXSwift01的更多相关文章
随机推荐
- 图像处理之图像增强项目---csdn去雾专栏1
(一)高斯低通滤波去噪 高斯低通滤波器(Gaussian Low Pass Filter)是一类传递函数为高斯函数的线性平滑滤波器.又由于高斯函数是正态分布的密度函数.因此高斯低通滤波器对于去除服从正 ...
- Conditions in bash scripting (if statements)
Shell中判断语句if中-z至-d的意思 - sunny_2015 - 博客园 https://www.cnblogs.com/coffy/p/5748292.html Conditions in ...
- thinkphp权限管理Rbac实例
首先,先建立Rbac那五张表(用户表,角色表,节点表,权限表,角色-用户表),后面四张可以在thinkphp中Rbac类里直接复制. 第二步,根据需求往那五张表里插入数据,注意:节点表里的节点名称一定 ...
- spring IOC(转)
原文 http://stamen.iteye.com/blog/1489223 引述:IoC(控制反转:Inverse of Control)是Spring容器的内核,AOP.声明式事务等功能在此基础 ...
- Machine Learning in Action(1) K-近邻
机器学习分两大类,有监督学习(supervised learning)和无监督学习(unsupervised learning).有监督学习又可分两类:分类(classification.)和回归(r ...
- Python 的枚举类型
起步 Python 中的枚举类型 Python 的原生类型中并不包含枚举类型.为了提供更好的解决方案,Python 通过 PEP 435 在 3.4 版本中添加了 enum 标准库. 枚举类型可以看作 ...
- UEFI启动模式下安装Ubuntu 16.04教程【转】
本文转载自:http://blog.csdn.net/Jesse_Mx/article/details/61425361 前言 最近常帮人安装Ubuntu,也算积累了一些经验.这篇博文主要谈一谈如何在 ...
- 操作Zookeeper
可以通过图形化界面进行操作使用的工具是 zookeeper-dev-ZooInspector.jar 连接到我的zk之后: 1.Java操作zk 依赖: <dependency> < ...
- Loadrunner脚本自动关联和手动关联
关于Loadrunner关联一.什么时候需要关联 1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服 ...
- ORA-03113: end-of-file on communication channel (通信通道的文件结尾)
今天有现场反应:数据库连不上了,提示什么归档日志有问题:又问了现场有做过什么特别操作,答曰没有,出问题后,只是重启了操作系统. 现场环境oracle11.0.2.3. 于是远程查看数据库状态,发现数据 ...