课件源码瑞客swift1期day27响应式编程_第1页
课件源码瑞客swift1期day27响应式编程_第2页
课件源码瑞客swift1期day27响应式编程_第3页
课件源码瑞客swift1期day27响应式编程_第4页
课件源码瑞客swift1期day27响应式编程_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

n响应式编程(ReactiveProgramming,简称RPp也是一种编程范式,于1997年提出,可以简化异步编程,提供更优雅的数据绑定p一般与函数式融合在一起,所以也会叫做:函数响应式编程(FunctionalReactiveProgramming,简称FRP)n比较著名的、 响应式框架pReactiveCocoaü简称RAC,有Objective-C、Swift版本ü官网: pReactiveü简称Rx,有众多编程语言的版本,比如RxJava、RxKotlin、RxJS、RxCpp、RxPHP、RxGo、RxSwift等等ü官网:nRxSwift(ReactiveXforSwift)ReactiveX的Swift版本p源码:p中文文档:nRxSwift 上已经有详细的安 ,这里只演Ccds方式的安装target'target_name'dopod'RxSwift','~>5'pod'RxCocoa','~>5'

②ppodrepoppod

③importimportRxSwiftimportnpRxSwift:Rx标准API的Swift实现,不包括任何iOSpRxCocoa:基于RxSwift,给iOSUI控件扩展了很多Rx nObservable:负责发 nObserver:负责订阅

序列(Event

publicenumEventpublicenumEvent<Element>///Nextelementisproduced.casenext(Element)///Sequenceterminatedwithanerror.caseerror(Swift.Error)///Sequencecompletedsuccessfully.casecompleted}pnext:perror:携带错误信息,表明Observablepcompleted:表明Observablevarobservable=varobservable=Observable<Int>.create{observerinreturnDisposables.create()}//observable=Observable.of(1,2,observable=Observable.from([1,2,observable.subscribeobservable.subscribe(onNext:{print("next",$0)},onError:print("error", pleted:{},onDisposed:{varobservable=varobservable=Observable<Int>.create{observerinreturnDisposables.create()}//observable=Observable.just(1)observable=Observable.of(1)observable=Observable.from([1])observable.subscribe{eventinletletobservable=period:scheduler:observable.map"数值是\($0.bind(to:.disposed(by:letobserver=AnyObserver<Int>.init{eventinswitchevent{case.next(letdata):letobserver=AnyObserver<Int>.init{eventinswitchevent{case.next(letdata):print(data)casepleted:print("completed")case.error(leterror):print("error",error)}})letbinder=Binder<String>(label){label,textinlabel.text=text}Observable.just(1).map{"数值是\($0)"}.subscribe(binder).dispose()Observable.just(1).map{"数值是\($0)"}.bind(to:binder).dispose()extensionextensionReactivewhereBase:UIView{varhidden:Binder<Bool>{Binder<Bool>(base){view,valueinview.isHidden=value}}}letobservable=scheduler:MainScheduler.instance)observable.map{$0%2==0}.bind(to:button.rx.hidden).disposed(by:bag)n在开发中经常要对各种状态进 ppppBlockletletdata=(name:"Jack",age:(name:"Rose",age:data.bind(to:tableView.rx.items(cellIdentifier:"cell")){,cellcell.textLabel?.text= cell.detailTextLabel?.text="\( }.disposed(by: .subscribe(onNext:{ }).disposed(by: buttonbutton.rx.tap.subscribe(onNext}).disposed(by: classDog:NSObject@objcdynamicvarname:}dog.rx.observe(String.self,.subscribe(onNext:{nameinprint("nameis",name??"nil")}).disposed(by:bag)="larry"="wangwang".subscribe(onNext:{notificationin ",}).disposed(by:Observable.justObservable.just(0.8).bind(to:slider.rx.value.map{}.bind(to:textField.rx.text).disposed(by:.subscribe(onNext:{textinprint("textis",text??"nil")}).disposed(by:p它们是RxCocoa.ControlProperty n在不需要再接 //立即取消订阅 订阅observable.subscribe{eventin/当bag销毁(deinit)时,会自动调用Disposable实例的dispo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论