Swift 响应式编程FRP使用RAC学习笔记1

在iOS平台使用响应式编程(Functional Reactive Programming,简称FRP),有一个很好的开源项目ReactiveCocoa,ReactiveCocoa简称RAC,它是基于响应式编程思想的Objective-C实践。关于FRP和ReactiveCocoa本文并不过多讲述思想及图例,网上此类文件也很多。这里主要提供一些代码干货。
注:写本文时,已经是Swift 3.0 及 ReactiveCocoa 5.0,RAC 5.0相比以前的版本API有了很大变化,受影响于Swift 3.0升级及自身结构的调整。

以下内容,假设你的开发环境已经OK。
开始吧!Let's do it.

按钮事件监听

button.reactive.trigger(for: .touchUpInside).observeValues { () in
    print("按钮点击事件")
} 

是不是感觉太简单了。

TextField值变化事件

每一个输入键入后都会调用到这个事件

textField.reactive.continuousTextValues.observeValues { (text) in
    print(text!);
}

用户名长度大于3的,可以使用filter.

textField.reactive.continuousTextValues.filter { (text) -> Bool in
    let length = text?.lengthOfBytes(using: .utf8)
    return length! > 3
}.observeValues { (text) in
    print(text!);
}

使用map操作来转换为想要的数据

let validUsernameSignal = textField.reactive.continuousTextValues.map { [unowned self] (text) -> Bool in
    return self.isValidUsername(text!)
}
validUsernameSignal.map { (usernameValid) -> UIColor in
    return usernameValid ? UIColor.lightGray : UIColor.yellow
}.observeValues { [unowned self] (color) in
    self.textField.backgroundColor = color
}

以上是一个验证用户名是否有效的逻辑,改变了输入框的背景颜色。isValidUsername(_:)返回用户名是否有效。

综上,RAC已涵盖大部分控件的常用监听:


Swift 响应式编程FRP使用RAC学习笔记1_第1张图片

其API 都放在了 reactive 后,比较方便。


相关链接:Swift 响应式编程FRP使用RAC学习笔记2

你可能感兴趣的:(Swift 响应式编程FRP使用RAC学习笔记1)