Reactivecocoa: sinyal menembak dua kali, berbedaSampaiDiubah tidak menangkap duplikat

Dibuat pada 20 Des 2013  ·  3Komentar  ·  Sumber: ReactiveCocoa/ReactiveCocoa

Oke agak bingung disini.

viewModel memiliki properti searchString yang saya verifikasi hanya disetel sekali. Namun ini dipecat dua kali, membuat dua panggilan api. Tidak masalah bahwa itu tidak boleh diaktifkan dua kali, tetapi bahkan ada distinctUntilChanged di sana yang tidak mencegahnya. Jika saya meletakkan breakpoint di map , itu pasti mencapai dua kali dengan nilai yang sama untuk 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: @[]];
    }];

Lupa menyebutkan bahwa jika saya berlangganan langsung ke RACObserve(self, searchString) , dan memasukkan breakpoint, itu hanya menangkap sekali.

question

Komentar yang paling membantu

Komentar Anda menyelamatkan hidup saya :D

Semua 3 komentar

Kotoran. Lupakan. Berlangganan dua kali.

Komentar Anda menyelamatkan hidup saya :D

Saya pernah mengalami masalah ini sebelumnya, saya menggunakan uitextfiled, Ketika saya mendengarkan teks, sinyal menyala dua kali, karena uitextfiled adalah FirstResponder berubah, ketika isFirstResponder TIDAK dipecat, YA dipecat

Apakah halaman ini membantu?
0 / 5 - 0 peringkat