Enabling an UIButton using Reactive Cocoa RACSignal

ios, objective-c, reactive-cocoa, reactive-programming, uibutton

Solution

The `RAC()` macro takes two arguments at a minimum, the object that's the target and a valid keypath on that object.

Like so:

RAC(signUp, enabled) = formValid;

You're passing it `signUp.enabled`, which is a single item, and happens to be a `BOOL`, not an object. After the macro is expanded, the `BOOL` is passed to a method that expects an object argument, so the compiler complains:

[[RACSubscriptingAssignmentTrampoline alloc] initWithTarget:signUp.enabled nilValue:<#garbage#>][@keypath(signUp.enabled, nil)]

Problem

I have a `UIButton` added to a view. My view also has three text box viz. username, password and confirmPassword. Based on the legitimate content of these text box, I need to enable my signUp button. Here is my code snippet :- ``` UIButton *signUp = [[UIButton alloc]initWithFrame:CGRectMake(10, 100, 50, 20)]; signUp.backgroundColor = [UIColor greenColor]; signUp.enabled = NO ; [self.view addSubview:signUp]; RACSignal *formValid = [RACSignal combineLatest:@[ username.rac_textSignal, password.rac_textSignal, confirmPassword.rac_textSignal ] reduce:^(NSString *username, NSString *password, NSString *passwordVerification) { return @([username length] > 0 && [password length] > 8 && [password isEqual:passwordVerification]); }]; RAC(signUp.enabled) = formValid; //Error is here ``` In the last line, I'm getting two errors:- - Implicit conversion of 'BOOL' (aka 'signed char') to 'id' is disallowed with ARC - Expected identifier I am new to Reactive Cocoa. Please ignore the mistakes.

Original source