RACSignal指示属性何时返回其初始值

时间:2013-11-26 17:25:20

标签: ios reactive-cocoa

我有一个属性recording,如果YES处于州UILongPressGestureRecognizerUIGestureRecognizerStateBegan,则会更改为UIGestureRecognizerStateChanged

如何创建仅在recording返回NO而不是初始值时触发的信号?

2 个答案:

答案 0 :(得分:5)

每次@YES的值更改为self.recording时,这会发送YES,并忽略任何NO

RACSignal *mySignal = [RACObserve(self, recording) ignore:@NO];

这会跳过初始值,无论是NO还是YES,都会发送每个后续值(NOYES):

RACSignal *mySignal = [RACObserve(self, recording) skip:1];

如果属性设置为新的(非初始)值,您可以使用NSKeyValueObservingOptionNew对ReactiveCocoa KVOs属性进行更精细的控制,以便仅发送值:

RACSignal *mySignal = [self rac_valuesAndChangesForKeyPath:@"recording" 
                                                   options:NSKeyValueObservingOptionNew
                                                  observer:self];

答案 1 :(得分:2)

您是否尝试使用skip:方法跳过初始“否”信号?