Reactivecocoa: zweimaliges Auslösen des Signals, DifferentUntilChanged fängt keine Duplikate ab

Erstellt am 20. Dez. 2013  ·  3Kommentare  ·  Quelle: ReactiveCocoa/ReactiveCocoa

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.

question

Hilfreichster Kommentar

Dein Kommentar hat mein Leben gerettet :D

Alle 3 Kommentare

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen