Ok un peu confus ici.
Mon viewModel
a une propriété searchString
que j'ai vérifiée n'est définie qu'une seule fois. Cependant, cela est déclenché deux fois, effectuant deux appels api. Peu importe qu'il ne devrait pas tirer deux fois, mais il y a même un distinctUntilChanged
là-dedans qui ne l'empêche pas. Si je mets un point d'arrêt dans le map
, il frappe définitivement deux fois avec la même valeur pour 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: @[]];
}];
J'ai oublié de mentionner que si je m'abonne directement à RACObserve(self, searchString)
et que j'insère un point d'arrêt, cela n'intervient qu'une seule fois.
Merde. Peu importe. Abonnez-vous deux fois.
Ton commentaire m'a sauvé la vie :D
J'ai déjà eu ce problème, j'utilise uitextfiled, lorsque j'écoute du texte, le signal se déclenche deux fois, car le uitextfiled est FirstResponder modifié, lorsque isFirstResponder est NON déclenché, est OUI déclenché
Commentaire le plus utile
Ton commentaire m'a sauvé la vie :D