FNEasyBind
FNEasyBind 是一种非常基础的简单实现的可观察性库,您可以在其上进行订阅。本库旨在替代导入整个 RxSwift 库,但并不完全取代它。无论如何,我使用了与 Rx 相同的术语和类名来进行比较。而且,您可能无法在同一项目中同时使用这两个库。通常,我会将其与 MVVM 设计模式一起使用,以便轻松更新视图的观察模式。
在构建和测试它时,我学到了很多知识。所以,将其视为一个小型反应式框架的教育性实现。
待办事项
- UIKit 绑定
- PublishSubject
- BehaviorSubject
- Variable
- ReplaySubject
- 单元测试
- 过滤器/操作符操作
致谢
代码受到了 fxm90/LightweightObservable 的启发。我添加了一些帮助方法和线程安全性。
最低要求
- iOS 10.0+
- Swift 5.1+
使用方法:
您的 ViewModel.swift
/// the value is immutable, so you can only subscribe to changes.
var formattedDateTime: Observable<String> {
formattedDateTimeVariable.asObservable()
}
/// the value is mutable, so only this class can modify it.
private let formattedDateTimeVariable = Variable<String>(ClockViewModel.formattedDate())
private static func formattedDate() -> String {
. . .
}
ViewController.swift
clockViewModel
.formattedDateTime
.bind(on: timeLabel, to: \.text)
.disposed(by: &disposeBag)
查看完整实现示例。
重要:为了避免保留周期和数据崩溃,当观察者需要self时,请始终使用[weak self]。
安装:
FNEasyBind 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'FNEasyBind'
贡献:
欢迎贡献 ♡。
联系:
Fabio Nisci • [email protected]
许可(MIT):
版权所有(C) 2020-至今 - Fabio Nisci
特此授予任何获取此软件及其相关文档文件(以下称为“软件”)副本的个人非独家使用权,包括但不限于使用、复制、修改、合并、发布、传播、再许可和/或出售软件副本,并允许向获得软件副本的个人授予这些权利,但必须遵守以下条件
上述版权声明和本许可声明必须包含在软件的所有副本或主要部分中。
本软件按照“原样”提供,不受任何形式的保证,无论明确还是暗示,包括但不限于适用性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者都不得因合同、侵权或其他任何原因而产生的任何索赔、损害或其他责任负责,无论这些责任是从、因或与软件或软件的使用或其他相关行为产生的。