2014-11-07 3 views
0

내 ViewController에는 UISearchBar가 포함되어 있으며 UISearchBarDelegate 프로토콜을 구현합니다. 내가 subscribeNext 제대로 발사 searchBartextDidChange:위한 신호 만들었습니다RACSignal 이벤트를 필터링 할 수 없습니다.

RACSignal *searchTextChangeSignal = [self rac_signalForSelector:@selector(searchBar:textDidChange:) fromProtocol:@protocol(UISearchBarDelegate)]; 

[searchTextChangeSignal subscribeNext:^(id x){ 
    // This works. 
}]; 

을이 시점에서를, 나는 단지 이상 3 자 텍스트가 포함) 1이 필터의 결과를 필터링, 그리고 것 2)는 300 ms 씩 조절되었습니다. 내 시도 :

[[searchTextChangeSignal filter:^(RACTuple *tuple) { 
    NSString *textEnteredIntoSearchBar = (NSString *)tuple.second; 
    return textEnteredIntoSearchBar.length > 3; 
}] throttle:300];``` 

위의 코드는 작동하지 않습니다. 블록은 절대로 실행되지 않습니다. filter 메서드를 subscribeNext으로 바꾸면 subscribeNext 블록 이됩니다. 또한 XCode는 위의 filter 메서드를 자동 완성하므로 메서드를 사용할 수 있습니다. 내가 여기서 누락 된 것이 있습니까? 이 작업을 수행하는 올바른 방법은 무엇입니까? 어떤 도움이라도 대단히 감사합니다.

답변

1

이해가 부족한 점은 신호가 구독되기 전까지는 신호가 작동하지 않는다는 것입니다. 스로틀 다음에 구독 방법 중 하나를 호출하면 데이터가 흐르기 시작합니다.

+0

감사합니다. David. 이 간단한 사실은 Reactive Cocoa 문서에서 누락 된 것으로 보입니다. – Bibs

+0

빠른보기와 그것은 README에 언급되어있는 것처럼 보이지 않습니다. 이것은 확실히 감독입니다. BasicOperators.md 문서에 언급되어 있습니다. https://github.com/ReactiveCocoa/ReactiveCocoa/blob/master/Documentation/BasicOperators.md#performing-side-effects-with-signals –

관련 문제