Reactivecocoa: signal déclenché deux fois, distinctUntilChanged n'attrapant pas les doublons

Créé le 20 déc. 2013  ·  3Commentaires  ·  Source: ReactiveCocoa/ReactiveCocoa

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.

question

Commentaire le plus utile

Ton commentaire m'a sauvé la vie :D

Tous les 3 commentaires

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é

Cette page vous a été utile?
0 / 5 - 0 notes