Reactivecocoa: сигнал срабатывает дважды, отдельныйUntilChanged не улавливает дубликаты

Созданный на 20 дек. 2013  ·  3Комментарии  ·  Источник: ReactiveCocoa/ReactiveCocoa

Хорошо, здесь немного запутался.

Мой 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) и вставлю точку останова, она будет зафиксирована только один раз.

question

Самый полезный комментарий

Ваш комментарий спас мне жизнь: D

Все 3 Комментарий

Дерьмо. Ничего. Подписан на дважды.

Ваш комментарий спас мне жизнь: D

У меня была эта проблема раньше , я использую uitextfiled , Когда я слушаю текст , сигнал срабатывает дважды, потому что isFirstResponder из uitextfiled изменен, когда isFirstResponder НЕ запускается, запускается ДА

Была ли эта страница полезной?
0 / 5 - 0 рейтинги