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.
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
Comentario más útil
Tu comentario me salvó la vida: D