本文的内容
因为最近要把项目代码从MVC迁移到MVVM,而且项目中使用的RAC,自己也抽出时间来学习RAC的用法,因为看了许多博客,而且每篇博客所介绍的使用例子也不一样,侧重点也不一样,所以决定把那些例子整理到这里。
ReactiveCocoa 和我们经常使用的编程模式很不一样,看了许多介绍RAC的实现原理的文章博客之类,还是一头雾水,然并软,唯有这些例子这么直观,更容易引入到项目中。
例子1
- 将一系列条件汇成一个 BOOL 值,其他对象使用这个值
使用RAC的代码
RACSignal *formValid = [RACSignal combineLatest:@[
self.username.rac_textSignal, self.emailField.rac_textSignal,
self.passwordField.rac_textSignal,
self.passwordVerificationField.rac_textSignal ]
reduce:^(NSString *username, NSString *email, NSString *password, NSString *passwordVerification) {
return @([username length] > 0 && [email length] > 0 && [password length] > 8 && [password isEqual:passwordVerification]);
}];
RAC(self.createButton.enabled) = formValid;
使用传统代码
- (BOOL)isFormValid {
return [self.usernameField.text length] > 0
&& [self.emailField.text length] > 0
&& [self.passwordField.text length] > 0
&& [self.passwordField.text isEqual:self.passwordVerificationField.text];
}
#pragma mark - UITextFieldDelegate
-(BOOL)textField(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString *)string{
self.createButton.enabled = [self isFormValid];
return YES;
}
因为团队里面每个人对RAC和MVVM的理解不同,每个人对RAC这个框架的熟悉程度也不尽相同,项目时间也比较紧,所以老大最后还是放弃了RAC+MVVM,这篇博客以后(等我使用的时候)再更新吧,。。。。。。。
网友评论