ObservableObservable<T>就是可观察序列,可以异步地产生一系列的event。
一个Observable<T>对象会随着时间推移不定期地发出event( element: T ); 
Event可以携带数据,它的泛型<T>用来指定Event携带的数据的类型; 
有了可观察序列,还需要有一个Observer来订阅它,这样订阅者才能收到Observable<T>不时发出的Event。 
 
Event Event是一个枚举,表示Observable发出的事件,共有三种类型:
1 2 3 4 5 6 7 8 9 10 public  enum  Event <Element > {         case  next(Element )            case  error(Swift .Error )            case  completed } 
 
next:next事件就是可以携带数据<T>的事件,表示一个正常的事件; 
error:error事件表示一个错误,它可以携带具体的错误内容,一旦Observable发出了error event,这个Observable就终止了,以后它再也不会发出event了; 
completed:completed事件表示Observable发出的事件正常地结束了,一旦Observable发出了completed event,这个Observable就终止了,以后再也不会发出event了。 
 
Observable与Sequence 联系:一个Observable( ObservableType)相当于一个序列Sequence(SequenceType),ObservableType.subscribe(_:)方法相当于SequenceType.generate()
区别:
swift中的SequenceType是同步的循环,而Observable是异步的; 
Observable对象会在有任何Event的时候,自动将Event作为一个参数通过ObservableType.subscribe(_:)发出,并不需要使用next方法。 
 
创建Observable序列的方法 just():通过传入一个默认值来初始化1 let  observable =  Observable <Int >.just(5 )
 
of()方法:接收可变数量的参数(同类型)1 let  observable =  Observable .of("A" ,"B" ,"C" )
 
from():通过一个数组进行初始化1 let  observable =  Observable .from(["A" ,"B" ,"C" ])
 
empty():创建一个空内容的Observable序列1 let  observable =  Observable <Int >.empty()
 
 never():创建一个永远不会发出event,也不会终止的Observable序列1 let  observable =  Observable <Int >.never()
 
error():创建一个直接发送一个错误的Observable序列1 2 3 4 enum  MyError : Error  {  case  A ,B  } let  observable =  Observable <Int >.error(MyError .A )
 
range():通过指定起始和结束数值,创建一个以这个范围内所有值所谓初始值的Observable序列1 2 3 let  observable =  Observable .range(start:1 , count:5 )let  observable =  Observable .of(1 ,2 ,3 ,4 ,5 )
 
repeatElement():创建一个可以无限发出给定元素的Event和Observable序列(永不终止)1 let  observable =  Observable .repeatElement(1 )
 
generate():创建一个只有当提供的所有判断条件都为true的时候,才会给出动作的Observable序列1 2 3 4 5 6 7 let  observable =  Observable .generate(initialState:0 , condition:{ $0  <=  10  }, iterate:{ $0  +  2  } ) let  observable =  Observable .of(0 ,2 ,4 ,6 ,8 ,10 )
 
create():接收一个block参数,对每一个过来的订阅进行处理1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 let  observable =  Observable <String >.create { observer in 	 	observer.onNext("next事件数据" )                   	 	observer.onCompleted() 	 	return  Disposables .create() } observable.subscribe{   print ($0 ) } next("next事件数据" ) completed 
 
deferred()该方法相当于创建一个Observable工厂,通过传入一个block来执行延迟Observable序列创建的行为,这个block是真正的实例化序列对象的地方。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 let  isOdd =  false let  factory : Observable <Int > =  Observable .deferred {  isOdd =  ! isOdd   if  isOdd {     return  Observable .of(1 ,3 )   }else  {     return  Observable .of(2 ,4 )   } } factory.subscribe { event in    print ("\(isOdd) " , event) } factory.subscribe { event in    print ("\(isOdd) " , event) } true  next(1 )true  next(3 )true  completedfalse  next(2 )false  next(4 )false  completed
 
interval()方法该方法创建的Observable序列每隔一段设定的时间,会发出一个索引数的元素,而且会一直发送下去
1 2 3 4 5 6 7 8 9 10 let  observable =  Observable <Int >.interval(1 ,scheduler:MainScheduler .instance)observable.subscribe { event in    print (event) } next(0 ) next(1 ) next(2 ) ... 
 
timer()