Reactivecocoa: señal que se dispara dos veces, distintaUntilChanged no captura duplicados

Creado en 20 dic. 2013  ·  3Comentarios  ·  Fuente: ReactiveCocoa/ReactiveCocoa

Ok, un poco confundido aquí.

Mi viewModel tiene una propiedad searchString que verifiqué solo se establece una vez. Sin embargo, esto se dispara dos veces, haciendo dos llamadas a la API. No importa que no debería dispararse dos veces, pero incluso hay un distinctUntilChanged que no lo impide. Si pongo un punto de interrupción en map , definitivamente golpea dos veces con el mismo valor para 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: @[]];
    }];

Olvidé mencionar que si me suscribo directamente a RACObserve(self, searchString) e inserto un punto de interrupción, solo se detecta una vez.

question

Comentario más útil

Tu comentario me salvó la vida: D

Todos 3 comentarios

Mierda. No importa. Suscrito dos veces.

Tu comentario me salvó la vida: D

He tenido este problema antes, uso uitextfiled, cuando escucho el texto, la señal se dispara dos veces, debido a que el uitextfiled cambia isFirstResponder, cuando isFirstResponder NO se activa, se activa YES

¿Fue útil esta página
0 / 5 - 0 calificaciones