Reactivecocoa: 信号が2回発火し、distinctUntilChangedが重複をキャッチしない

作成日 2013年12月20日  ·  3コメント  ·  ソース: ReactiveCocoa/ReactiveCocoa

ここで少し混乱しています。

私のviewModelは、一度だけ設定されることを確認したプロパティsearchStringがあります。 ただし、これは2回発生し、2回のAPI呼び出しを行います。 2回発火するべきではないことを気にしないでください、しかしそれを妨げていないdistinctUntilChangedさえそこにあります。 私は中にブレークポイントを置く場合はmap 、それは間違いで同じ値で二回ヒット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: @[]];
    }];

RACObserve(self, searchString)に直接サブスクライブし、ブレークポイントを挿入すると、1回しかキャッチされないことを忘れてしまいました。

question

最も参考になるコメント

あなたのコメントは私のライブを救った:D

全てのコメント3件

たわごと。 どうでも。 2回購読しました。

あなたのコメントは私のライブを救った:D

私は以前にこの問題を抱えていました、私はuitextfiledを使用します、私がテキストを聞くとき、信号は2回発火します、uitextfiled isFirstResponderが変更されたため、isFirstResponderがNO発火したとき、YES発火します

このページは役に立ちましたか?
0 / 5 - 0 評価