RxLens
使数据结构中实体的属性能够进行响应式读取和写时复制访问。
请查看生成的文档,请访问 vknabel.github.io/RxLens。
介绍
首先我们需要声明我们的数据结构和相应的镜头,用于我们的属性。关于镜头的解释可以在 Chris Eidhof 的这篇 博客文章 中找到。
struct Person: Equatable {
let name: String
static var name: Lens<Person, String> {
return Lens(
from: { $0.name },
to: { name, _ in Person(name: name) }
)
}
}
镜头主题
您可以创建一个只会反映名称更改的主题,并允许推送新的名称。
let personBehavior = BehaviorSubject(value: Person(name: "Valentin Knabel"))
let nameSubject = LensSubject(subject: personBehavior, lens: Person.name)
算子
以下算子将使用以下主题进行定义。
let personSubject = PublishSubject<Person>()
首先,您可以使用您的镜头通过 Observable.from(_:)
访问数据结构中的属性。
let nameSubject = personSubject.asObservable().from(Person.name)
此外,您还可以使用 Observer.to(_:, with:)
只观察属性的更改。
let nameObserver = personSubject.asObserver().to(Person.name, with: Person(name: "Initial"))
安装
RxLens 是一个仅支持 Swift 的项目,并支持 Swift Package Manager 和 CocoaPods。
Swift 包管理器
import PackageDescription
let package = Package(
name: "YourPackage",
dependencies: [
.Package(url: "https://github.com/vknabel/RxLens.git", majorVersion: 1)
]
)
CocoaPods
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
pod 'RxLens', '~> 0.1'
作者
Valentin Knabel,[邮箱地址隐藏]
许可
EasyInject 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。