طيب صبي مرتبك هنا.
viewModel
يحتوي على خاصية searchString
التي تحققت منها ولم يتم تعيينها إلا مرة واحدة. ومع ذلك ، يتم إطلاق هذا مرتين ، مما يؤدي إلى مكالمتين API. لا يهم أنه لا ينبغي أن يتم إطلاق النار مرتين ، ولكن هناك حتى 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)
، وأدرجت نقطة توقف ، فسيتم التقاطها مرة واحدة فقط.
القرف. لا تهتم. اشتركت مرتين.
تعليقك أنقذ حياتي: د
لقد واجهت هذه المشكلة من قبل , أستخدم uitextfiled عندما أستمع إلى نص يتم إطلاق الإشارة مرتين ، بسبب تغيير uitextfiled هو FirstResponder ، عندما لا يتم تشغيل FirstResponder ، يتم تشغيل YES
التعليق الأكثر فائدة
تعليقك أنقذ حياتي: د