我的ViewController包含一个UISearchBar并实现了UISearchBarDelegate协议。我为searchBartextDidChange:创建了一个用subscribeNext正确触发的信号
RACSignal *searchTextChangeSignal = [self rac_signalForSelector:@selector(searchBar:textDidChange:) fromProtocol:@protocol(UISearchBarDelegate)];
[searchTextChangeSignal subscribeNext:^(id x){
// This works.
}];在这一点上,我想将这个过滤器的结果过滤到1)只包含大于3个字符的文本,以及2)控制300 ms的文本。我的尝试:
[[searchTextChangeSignal filter:^(RACTuple *tuple) {
NSString *textEnteredIntoSearchBar = (NSString *)tuple.second;
return textEnteredIntoSearchBar.length > 3;
}] throttle:300];```上面的代码不工作。这些块永远不会被执行。如果我将filter方法替换为subscribeNext,那么subscribeNext块就会执行。此外,XCode自动完成了上面的filter方法,因此该方法是可用的。这里有什么东西我遗漏了吗?正确的方法是什么?任何帮助都是非常感谢的。
发布于 2014-11-07 16:15:10
缺少的理解是,信号在订阅之前不会执行任何工作。在节流阀之后调用一个订阅方法,您将看到数据开始流动。
https://stackoverflow.com/questions/26804262
复制相似问题