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的更多相关文章
随机推荐
- crm操作销售订单实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using Microsoft.Cr ...
- ReboletricSample工程搭建
受到 Just Say No to More End-to-End Tests 文章链接:http://googletesting.blogspot.tw/2015/04/just-say-no-t ...
- 2251: [2010Beijing Wc]外星联络
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 801 Solved: 481[Submit][ ...
- P1355 神秘大三角
题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...
- c# vs2010 连接access数据库
第一次在博客园写博文,由于文采不怎么好,即使是自己很熟悉的东西,写起来也会感觉到不知从何讲起,我想写的多了就好了. 这篇文章主要是介绍怎么用c# 语言 vs2010连接access数据库的,连接字符串 ...
- select version();desc mysql.user;
D:\wamp64\wamp\bin\mysql\mysql5.6.17\bin>mysql -hgoDev -uroot -ppasswordWarning: Using a password ...
- The Little Match Girl,摘自iOS应用Snow White and more stories
Many years ago on a cold and snowy New Year's Eve, a poor little girl was wandering arround on the s ...
- [通信]Linux User层和Kernel层常用的通信方式
转自:https://bbs.csdn.net/topics/390991551?page=1 netlink:https://blog.csdn.net/stone8761/article/deta ...
- php MVC原理
一直用php的mvc模式,但是一直没深入研究其原理性的东西,今天把最基本的mvc原理模型总结如下: 1.url访问方式 http://127.0.0.1:8080/ceshi.com/index.p ...
- Codeforces Round #363 (Div. 2) B. One Bomb —— 技巧
题目链接:http://codeforces.com/contest/699/problem/B 题解: 首先统计每行每列出现'*'的次数,以及'*'出现的总次数,得到r[n]和c[m]数组,以及su ...