【发布时间】:2016-07-27 09:52:52
【问题描述】:
我正在尝试在 Swift 中提出一个简单的可观察对象,并考虑使用 RxSwift。我找不到一个简单的例子来做这样的事情:
protocol PropertyObservable {
typealias PropertyType
var propertyChanged: Event<(PropertyType, Any)> { get }
}
class Car: PropertyObservable {
typealias PropertyType = CarProperty
let propertyChanged = Event<(CarProperty, Any)>()
dynamic var miles: Int = 0 {
didSet {
propertyChanged.raise(.Miles, oldValue as Any)
}
}
dynamic var name: String = "Turbo" {
didSet {
propertyChanged.raise(.Name, oldValue as Any)
}
}
}
以上是来自this blog post 的可观察对象的纯 Swift 解决方案;我真的很喜欢它是一个基于协议的解决方案而不是侵入性的。就我而言,我的项目中有一个对象,其中每个属性都是在后台异步设置的(蓝牙设备)。所以我需要观察/订阅更改,而不是实时获取/设置属性。
我一直听说 RxSwift 会做到这一点,甚至更多。但是,我找不到一个简单的例子来匹配上面并开始认为 RxSwift 对我的需要来说太过分了?感谢您的帮助。
【问题讨论】:
-
如果您发布项目中对象的实际代码并展示您如何设置其属性可能会更好。 RxSwift 中有多种工具可以解决这个问题。
标签: swift swift2 rx-swift reactive-cocoa-3