ここで少し混乱しています。
私の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回しかキャッチされないことを忘れてしまいました。
たわごと。 どうでも。 2回購読しました。
あなたのコメントは私のライブを救った:D
私は以前にこの問題を抱えていました、私はuitextfiledを使用します、私がテキストを聞くとき、信号は2回発火します、uitextfiled isFirstResponderが変更されたため、isFirstResponderがNO発火したとき、YES発火します
最も参考になるコメント
あなたのコメントは私のライブを救った:D