RxSwift+MVVM+Coordinator模式:如何按顺序等待协调器返回结果?
基于Coordinator模式的示例实现
我帮你把这段Coordinator相关的代码整理成清晰易读的Markdown格式啦,具体如下:
基础协调器基类
这是所有协调器的父类,定义了核心的协调和启动方法:
class Coordinator<Result> { // 协调器类的其他相关代码 func coordinate<T>(to coordinator: Coordinator<T>) -> Observable<T> { return coordinator.start() } func start() -> Observable<Result> { // 返回结果的具体实现逻辑,子类可重写 } }
状态枚举定义
这个枚举用来作为协调器的返回结果类型,封装了流程中的不同状态:
enum Status { case success(data: NSData?) case cancelled(error: NSError?) case failed(data: NSData?) }
具体测试协调器示例
基于基础基类,我们可以实现具体的业务协调器,比如TestCoordinator1、TestCoordinator2、TestCoordinator3:
class TestCoordinator1: Coordinator<Status> { override func start() -> Observable<Status> { // 这里编写该协调器的启动逻辑,比如导航到对应页面、处理业务流程 // 示例返回一个成功状态的Observable return Observable.just(.success(data: nil)) } } class TestCoordinator2: Coordinator<Status> { override func start() -> Observable<Status> { // 自定义该协调器的业务逻辑 return Observable.just(.cancelled(error: nil)) } } class TestCoordinator3: Coordinator<Status> { override func start() -> Observable<Status> { // 自定义该协调器的业务逻辑 return Observable.just(.failed(data: nil)) } }
内容的提问来源于stack exchange,提问作者buhutz
相关产品推荐
相关产品推荐

