์ข์, ์ฌ๊ธฐ์ ์ฝ๊ฐ ํผ๋์ค๋ฌ์.
๋ด 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)
์ง์ ๊ตฌ๋
ํ๊ณ ์ค๋จ์ ์ ์ฝ์
ํ๋ฉด ํ ๋ฒ๋ง ํฌ์ฐฉ๋๋ค๋ ์ ์ ์์ด๋ฒ๋ ธ์ต๋๋ค.
๋ฅ. ์ ๊ฒฝ ์ฐ์ง ๋ง์. ๋ ๋ฒ ๊ตฌ๋ ํ์ต๋๋ค.
๋น์ ์ ๋๊ธ์ด ์ ๋ผ์ด๋ธ๋ฅผ ๊ตฌํ์ต๋๋ค :D
๋๋ ์ ์์ด ๋ฌธ์ ๋ฅผ ๊ฒช์๊ณ , ๋๋ uitextfiled๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๋ ํ ์คํธ๋ฅผ๋ค์ ๋, ์ ํธ๊ฐ ๋ ๋ฒ ๋ฐ์ฌ๋๊ณ , uitextfiled์ ์ด์ ๋ FirstResponder๊ฐ ๋ณ๊ฒฝ๋๊ณ , isFirstResponder๊ฐ NO๊ฐ ๋ฐ์ํ๋ฉด YES๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น์ ์ ๋๊ธ์ด ์ ๋ผ์ด๋ธ๋ฅผ ๊ตฌํ์ต๋๋ค :D