ReactiveCocoa:仅订阅新值

时间:2014-03-07 08:57:09

标签: ios objective-c cocoa reactive-cocoa

我在viewDidLoad中创建了一个事件订阅者,如下所示:

[RACObserve(_authenticationView.passwordInput.textField, text) subscribeNext:^(NSString* text)
{
     //handle this
}];

只要textField.text属性更改(预期),它就会触发,但是当创建时它会触发一次,或者对于初始值触发,这不是我想要的。

当然我可以过滤掉它,但我只想过滤掉第一个事件。我该怎么做呢?

要求:

  • 如果密码的 new 为空值,则显示验证消息(无法将密码设置为空)。
  • 如果密码具有新的非空值,请与远程客户端通信。

。 。那么最干净的方法是什么?

2 个答案:

答案 0 :(得分:21)

如果您只想跳过第一个值,只需在-skip:1中加上:{/ p>

[[RACObserve(_authenticationView.passwordInput.textField, text) skip:1] subscribeNext:^(NSString* text)
{
     //handle this
}];

答案 1 :(得分:1)

您可以使用不同的方法:

  1. -skip:1跳过第一个值。
[[RACObserve(_authenticationView.passwordInput.textField, text) skip:1] subscribeNext:^(NSString* text) {
    //handle this
}];

  1. -ignore:nil跳过初始nil值。
[[RACObserve(_authenticationView.passwordInput.textField, text) ignore:nil] subscribeNext:^(NSString* text) {
    //handle this
}];

  1. -distinctUntilChanged跳过等于先前的新值。
[[RACObserve(_authenticationView.passwordInput.textField, text) distinctUntilChanged] subscribeNext:^(NSString* text) {
    //handle this
}];