Ok, ein bisschen verwirrt hier.
Mein viewModel
hat eine Eigenschaft searchString
, die ich verifiziert habe, wird nur einmal gesetzt. Dies wird jedoch zweimal ausgelöst, wodurch zwei API-Aufrufe getätigt werden. Es macht nichts, dass es nicht zweimal feuern sollte, aber es gibt sogar ein distinctUntilChanged
darin, das es nicht verhindert. Wenn ich einen Breakpoint in map
setze, trifft er definitiv zweimal mit dem gleichen Wert für 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: @[]];
}];
Ich habe vergessen zu erwähnen, dass, wenn ich RACObserve(self, searchString)
direkt abonniere und einen Breakpoint einfüge, das nur einmal abfängt.
Scheisse. Egal. Zweimal abonniert.
Dein Kommentar hat mein Leben gerettet :D
Ich hatte dieses Problem schon einmal,ich benutze uitextfiled,Wenn ich auf Text höre,wird das Signal zweimal ausgelöst,da der uitextfiledFirstResponder geändert ist, wenn isFirstResponder NEIN ausgelöst wird,wird JA ausgelöst
Hilfreichster Kommentar
Dein Kommentar hat mein Leben gerettet :D