2016-12-21 3 views
0

Я делаю 2 сетевых звонка (Подробности случая и Детали сообщения). Я хотел бы объединить оба RACCommands, чтобы они оба заполнились, а затем я вызываю nextMethod().Как слить две команды Reactive Cocoa?

Вот два вызов работает независимо друг от друга:

@weakify(self); 
[[self.loadCaseCommand.executionSignals switchToLatest] subscribeNext:^(MZACaseDetails *caseDetails) { 
    @strongify(self); 
    self.caseDetails = caseDetails; 
    self.watcherAccessLevel = caseDetails.watcherAccessLevel; 
    self.mutableCaseDetails = (MZAMutableCaseDetails *)[self.caseDetails mutableCopy]; 

    [self createViewModels]; 
    [(RACSubject *)self.contentDidChangeSignal sendNext:nil]; 
}]; 

[[self.loadMessagesCommand.executionSignals switchToLatest] subscribeNext:^(MZAMessage *messageDetails) { 
    @strongify(self); 
    self.messageDetails = messageDetails; 
}]; 
+1

Почему вы используете 'RACCommand' вместо всего' RACSignal'? –

ответ

0

Если у вас есть два или более RACSignal и хотите, чтобы объединить их в один, который sendNext: когда все входные sendNext: и sendError: когда один посыл вы должны использовать zip-оператор.

http://reactivex.io/documentation/operators/zip.html

в реактивном какао выглядит как

RACSignal* signal1 = [self.loadCaseCommand.executionSignals switchToLatest]; 
RACSignal* signal2 = [self.loadMessagesCommand.executionSignals switchToLatest]; 

[RACSignal zip:@[signal1, signal2]] subscribeNext:^(RACTuple *data) 
{ 
    RACTupleUnpack(MZACaseDetails *caseDetails, MZAMessage *messageDetails) = data; 
    //... 
} 
+0

Огромное спасибо! – kerbelda

Смежные вопросы