Reactive Cocoa:仅订阅新值

时间:2015-05-08 09:24:15

标签: ios cocoa reactive-cocoa

我是Reactive Cocoa的新手。我想要实现的目标是每次财产价值变化时得到通知。但是,当财产设置为相同值时,我不想收到通知。 这是一些代码:

self.testProperty = 0;
[[RACObserve(self, self.testProperty) skip:1] subscribeNext:^(id x) {
    NSLog(@"Did Change: %@", x);
}];

self.testProperty = 1;
self.testProperty = 1;
self.testProperty = 1;
self.testProperty = 1;
self.testProperty = 1;

这就是我在控制台的输出上获得的

> Did Change: 1
> Did Change: 1
> Did Change: 1
> Did Change: 1
> Did Change: 1

我期待"做了改变"只打印一次,而不是五次。有没有办法只订阅新值?

1 个答案:

答案 0 :(得分:6)

有一种方法,distinctUntilChanged

[[[RACObserve(self, self.testProperty) 
  skip:1]
  distinctUntilChanged]
  subscribeNext:^(id x) {
    NSLog(@"Did Change: %@", x);
}];