RACObserver不遵循属性更改

时间:2016-02-11 12:22:54

标签: ios reactive-cocoa

我想知道为什么以下代码不起作用:

RACDisposable *subscr;

    subscr = [[[RACObserve(self.myTextView, text) filter:^BOOL(NSString* value) {

        return value != nil;
    }]

      // Map

      map:^id(NSString * value) {

        return [NSString stringWithFormat:@"Shock the %@", value];

    }]

     setKeyPath:@keypath(self.testLabel, text) onObject:self.testLabel];

    NSLog(@"test label text? %@", self.testLabel.text);

当我更改文本(在textField中键入它)时,没有任何作用。我知道有类似的方法:

 RAC(self, testString) = [self.myTextField.rac_textSignal map:^id(NSString* value) {

但我的观点是测试RACObserve。当我“观察”其他属性时,上面的代码工作。

1 个答案:

答案 0 :(得分:1)

RACObserve使用键值观察。 UIKit中的大多数属性(包括UITextView.text)都不符合KVO标准。

这就是为什么存在像rac_textSignal这样的辅助信号的原因。如果每次文本更改时都需要触发信号,请使用它们。