在 MVVM 中使用 RACSubject 可以非常方便地实现统一的错误处理逻辑。
比如,我们可以在 viewModel 的基类中声明一个 RACSubject 类型的属性 errors ,然后在 viewController 的基类中编写统一的错误处理逻辑:
[self.viewModel.errors subscribeNext:^(NSError *error) {
// 错误处理逻辑
}
此时,假设在某个界面的 viewModel 中有三个用来请求远程数据的命令,分别是 requestReadmeMarkdownCommand 、requestBlobCommand 和 requestReadmeHTMLCommand ,那么这个界面的错误处理逻辑就可以这么写:
[[RACSignal
merge:@[
self.requestReadmeMarkdownCommand.errors,
self.requestBlobCommand.errors,
self.requestReadmeHTMLCommand.errors
]]
subscribe:self.errors];