2015-08-20 6 views
1

Я пытаюсь подписаться на сигнал, но при повторном использовании ячеек произойдет исключение «Имя сигнала: уже привязано к ключу« nickname »на объекте, добавив имя сигнала: не определено поведение»Rac-сигнал уже привязан к пути ключа

здесь код

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; 

Как я могу исправить это?

+0

Где вы используете этот код? В источнике данных табличного представления? – Cosyn

ответ

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

Утверждение, поднятое вышеуказанным методом [RACSignal + Operations.m] в модели отладки. избегать связывания сигнала дважды - хорошая привычка.

+0

см. этот http: // stackoverflow. ком/вопросы/19650802/удалить-а-Reactiv ecocoa-сигнал из-а-контроля – dengxx

0

В моем случае это произошло потому, что я делаю две вещи одновременно, что вызвало конфликт:

1) Установка RACCommand к .rac_command на UIButton с allowsConcurrentExecution = YES, что пинает запрос сети;

2) И ... я установка enabled свойство UIButton к «не выполняет:

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

Видимо, allowsConcurrentExecution = NO уже заботится о отключении кнопки, пока сигнал по-прежнему выполняющей сетевой запрос, и когда я добавил этот код, чтобы отключить кнопку, он дважды связывал его, тем самым вызывая конфликт.

 Смежные вопросы

  • Нет связанных вопросов^_^