ReactiveCocoa条件异步信号

时间:2014-05-01 17:06:08

标签: ios objective-c reactive-cocoa

我有merge操作取决于两个异步操作的结果。第一种是网络操作,第二种是位置授权的成功或失败。我不关心这些操作的,只是两者都已完成。

这就是它的样子:

RACSignal *networkCallReturned = [[[NSNotificationCenter defaultCenter] rac_addObserverForName:kNetworkCallReturned object:nil] take:1];
RACSignal *locationPermission = [[[NSNotificationCenter defaultCenter] rac_addObserverForName:kLocationManagerGotLocationPermission object:nil] take:1];

@weakify(self);
[[RACSignal merge:@[ networkCallReturned, locationPermission ]
subscribeCompleted:^{
    @strongify(self);

    // Do something else here
}];

我遇到的问题是,当我没有可访问性时,不会进行网络呼叫。这不是我可以改变的东西。如果我没有可达性,我怎样才能有条件地发出networkCallReturned信号?

我是否必须设置另一个监视可达性的信号,然后获取从networkCallReturned发送的第一个值或可达性信号?

1 个答案:

答案 0 :(得分:2)

可以监控可达性,但它充满了种族和边缘情况。通过捕获无法完成网络呼叫或超时网络呼叫的错误,您似乎可以获得更好的服务。