Хорошо, здесь немного запутался.
Мой viewModel
имеет свойство searchString
которое я проверил, устанавливается только один раз. Однако он запускается дважды, делая два вызова API. Неважно, что он не должен стрелять дважды, но там даже distinctUntilChanged
не мешает этому. Если я поставлю точку останова в map
, он определенно попадет дважды с тем же значением для queryString
.
RACSignal *searchResultsSignal = [[[[[[[[RACObserve(self, searchString)
ignore:nil]
ignore:@""]
distinctUntilChanged]
deliverOn:[RACScheduler scheduler]]
map:^id (NSString *queryString) {
@strongify(self);
TCThirdPartyAPIType type = [TCAPIIndividual thirdPartyAPITypeForAPITypeString:self.activeAPI.APITypeString];
return [TCThirdPartyAPIHelper fetchResultsForAPIType:type withQueryString:queryString latitude:self.latitude longitude:self.longitude];
}]
switchToLatest]
map:^id(TCAPIResponse *response) {
return response.result.array;
}] catch:^RACSignal *(NSError *error) {
return [RACSignal return: @[]];
}];
Забыл упомянуть, что если я подпишусь непосредственно на RACObserve(self, searchString)
и вставлю точку останова, она будет зафиксирована только один раз.
Дерьмо. Ничего. Подписан на дважды.
Ваш комментарий спас мне жизнь: D
У меня была эта проблема раньше , я использую uitextfiled , Когда я слушаю текст , сигнал срабатывает дважды, потому что isFirstResponder из uitextfiled изменен, когда isFirstResponder НЕ запускается, запускается ДА
Самый полезный комментарий
Ваш комментарий спас мне жизнь: D