我在反應可可中遇到了一些非常簡單的代碼問題,我無法理解我做錯了什麼。基於UITextField中的文本的反應可可啓用按鈕
我只是試圖將一個UIButton的啓用狀態綁定到一個信號。該信號採用UITextField
的文本並通過正則表達式運行。這樣我可以在正則表達式匹配時啓用按鈕。
此代碼給了我一個異常而加載視圖控制器:
// Poperties used in the view controller
@property (strong, nonatomic) NSRegularExpression *regex;
@property (weak, nonatomic) IBOutlet UITextField *myTextField;
@property (weak, nonatomic) IBOutlet UIButton *continueButton;
// ... other stuff ...
// Code in my "view did load" method
RACSignal *mySignal = RACObserve(self, myTextField);
[mySignal deliverOn:[RACScheduler mainThreadScheduler]];
@weakify(self);
[mySignal map:^(NSString *value) {
@strongify(self);
NSUInteger matches = [self.regex numberOfMatchesInString:value
options:0
range:NSMakeRange(0, [value length])];
return @(matches > 0);
}];
RAC(self.continueButton, enabled) = mySignal;
顯然例外解釋說,我試圖讓「啓用」從UITextField
選擇,而UITextField
沒有這個選擇。我不明白爲什麼我在調用continueButton
而不是myTextField
中的啓用選擇器時出現此錯誤。
基本上例外是:
[UITextField charValue]: unrecognized selector sent to instance 0xa2c7830
並且調試器在停止線:
[object setValue:x ?: nilValue forKeyPath:keyPath];
實例0xa2c7830
是UITextField
。 object
是UIButton
和keyPath
是@"enabled"
。我只是沒有看到這個設置有什麼問題,除了它被我的UITextField
而不是UIButton
所調用!
感謝您的幫助!
一個奇妙的解釋,非常感謝。這是最好的答案,因爲現在我明白了爲什麼它不起作用。現在感覺RAC更加舒適。再次感謝! –