ACKReactiveExtensions
ACKReactiveExtensions 是你可以在应用程序中使用的一组有用的 ReactiveCocoa 扩展。
目前我们有以下扩展:
- AlamofireImage
- UIKit
- WebKit
如果你想使用更多扩展,请提交问题或更好的是创建一个 pull request!
安装
ACKReactiveExtensions 通过 CocoaPods 可用。只需将以下行添加到您的 Podfile 中
pod "ACKReactiveExtensions"
子规范
使用 `pod "ACKReactiveExtensions"`,您将仅获取通用和 UIKit 扩展,但也有您可能需要或喜欢的子规范。
pod 'ACKReactiveExtensions/AlamofireImage'
pod 'ACKReactiveExtensions/WebKit'
这些子规范通常需要额外的依赖项(例如 Argo 或 Reachability),并且您可能不需要它们的项目。这就是为什么将它们分离成子规范的原因。
用法
使用方法非常简单,ACKReactiveExtensions只提供了更多对ReactiveSwift的Reactive
结构体的扩展,以便它可以在更多对象上使用。
let imageURL: Property<URL> = ...
let imageView = UIImageView()
imageView.reactive.imageURL <~ imageURL
映射扩展
ACKReactiveExtensions包含以下库的响应式映射扩展。有关更多信息,请参阅它们的页面。
映射配置
一般来说,我们反对在主线程上映射对象(你也应该这样),但你知道吗,人只活一次,所以我们还是给你提供了这样的机会。默认情况下,我们的映射扩展允许这种行为,但如果你想限制这种行为,你可以通过设置配置变量来做到这一点。
ACKReactiveExtensionsConfiguration.allowMappingOnMainThread = false
从现在起,映射扩展将期望在后台线程上调用,但别担心,我们使用了断言,所以即使在某些情况下事情没有按预期进行,你的生产用户也不会崩溃。
UITextField/UITextView 双向绑定
ACKReactiveExtensions包含一个特殊的双向绑定运算符<~>
,它会创建MutableProperty
和你的UITextField
/UITextView
之间的绑定。
到目前为止,所有这些绑定看起来都像这样
let textProperty: MutableProperty<String?> ...
let textField: UITextField ...
textField.reactive.text <~ textProperty
textProperty <~ textField.reactive.continousTextValues
从现在起,你可以使用<~>
运算符
textProperty <~> textField
<~>
运算符是交换律的,所以操作数的顺序不重要。
作者
Ackee团队
许可协议
ACKCategories 可在 MIT 许可协议下使用。有关更多信息,请参阅 LICENSE 文件。