Rac信号已经绑定到关键路径

时间:2015-08-20 05:27:08

标签: ios signals reactive-cocoa subscribe

我试图订阅信号,但是当信元重用时,会导致异常"信号名称:已经绑定到关键路径"昵称"在对象上,添加信号名称:是未定义的行为"

这是代码

 RACSignal *_sn = [[cell.functionTextField.rac_textSignal takeUntil:cell.rac_prepareForReuseSignal] map:^(NSString *value) {
                    if ([value length] > 9) {
                        return [value substringToIndex:9];
                    } else {
                        return value;
                    }
                }];

  RAC(cell.functionTextField, text) = _sn;
  RAC(_hp,nickname) = _sn;

我该如何解决?

2 个答案:

答案 0 :(得分:0)

- (RACDisposable *)setKeyPath:(NSString *)keyPath onObject:(NSObject *)object nilValue:(id)nilValue 

调试模型中上述方法[RACSignal + Operations.m]引发的断言。 避免两次绑定信号是个好习惯。

答案 1 :(得分:0)

在我的情况下,这是因为我同时做了两件事,导致了冲突:

1)将RACCommand设置为.rac_command上的UIButton allowsConcurrentExecution = YESenabled启动网络请求;

2)而且......我正在设置UIButton的{​​{1}}属性为“不执行:

RAC(viewallButton, enabled) = [command.executing not];

显然,allowsConcurrentExecution = NO已经负责在信号仍在执行网络请求时禁用按钮,当我添加此代码以禁用按钮时,它会将其绑定两次,从而导致冲突。 / p>