RAC3 中 MutableProperty 的多个观察者
Multiple observers of a MutableProperty in RAC3
我有一个 "DataManager" 单例 class 使用 RAC3 处理我的应用程序的状态。它包含多个 MutableProperty
s,我在不同的位置开始和观察。
我想让我的 DataManager 启动或创建一个信号,我可以使用我的 DataManager 单例在任何视图控制器中观察到,使用 observe()
而不是 start()
等。但我被卡住了我不确定如何在我的 DataManager 中初始化这个信号。我试过定义一个 属性 像
let documentUpdateSignal: Signal<Int,NSError>
let remainingDocuments = MutableProperty<Int>(0)
然后尝试在初始化时使用我的可变 属性 生产者启动它
像
override init() {
documentUpdateSignal = remainingDocuments.producer.start(next: {
docs in
println("doc count \(docs)")
})
super.init()
}
但这不起作用,因为它不 return Signal<Int,NSError>
我也曾尝试创建一个 return 信号的方法,但运气不佳,而不是 属性... 像这样,尽管它看起来不太正确。
func updateSignal() -> Signal<Int, NSError> {
return remainingDocuments.producer
}
希望得到帮助
非常感谢!
你现在可能已经解决了这个问题:
var documentUpdateSignal: Signal<Int, NoError>?
....
remainingDocuments.producer.startWithSignal {
(var signal: Signal<Int, NoError>, var disposable : Disposable) -> () in
self.documentUpdateSignal = signal
}
不过,我不确定您能否从 class' init()
中呼叫 startWithSignal
,因为 self
不适用于被块捕获,直到 super
的 init 被调用。鉴于此,我假设 documentUpdateSignal
是可选的。
请注意,我还将 documentUpdateSignal
的声明从使用 NSError
更改为 NoError
以适应 MutableProperty
制作人的签名。
然后您可以使用以下方法观察来自其他地方的信号:
self.documentUpdateSignal?.observe(next: {
(var value: Int) in
println("Mutable property = \(value)")
}
)
我有一个 "DataManager" 单例 class 使用 RAC3 处理我的应用程序的状态。它包含多个 MutableProperty
s,我在不同的位置开始和观察。
我想让我的 DataManager 启动或创建一个信号,我可以使用我的 DataManager 单例在任何视图控制器中观察到,使用 observe()
而不是 start()
等。但我被卡住了我不确定如何在我的 DataManager 中初始化这个信号。我试过定义一个 属性 像
let documentUpdateSignal: Signal<Int,NSError>
let remainingDocuments = MutableProperty<Int>(0)
然后尝试在初始化时使用我的可变 属性 生产者启动它 像
override init() {
documentUpdateSignal = remainingDocuments.producer.start(next: {
docs in
println("doc count \(docs)")
})
super.init()
}
但这不起作用,因为它不 return Signal<Int,NSError>
我也曾尝试创建一个 return 信号的方法,但运气不佳,而不是 属性... 像这样,尽管它看起来不太正确。
func updateSignal() -> Signal<Int, NSError> {
return remainingDocuments.producer
}
希望得到帮助 非常感谢!
你现在可能已经解决了这个问题:
var documentUpdateSignal: Signal<Int, NoError>?
....
remainingDocuments.producer.startWithSignal {
(var signal: Signal<Int, NoError>, var disposable : Disposable) -> () in
self.documentUpdateSignal = signal
}
不过,我不确定您能否从 class' init()
中呼叫 startWithSignal
,因为 self
不适用于被块捕获,直到 super
的 init 被调用。鉴于此,我假设 documentUpdateSignal
是可选的。
请注意,我还将 documentUpdateSignal
的声明从使用 NSError
更改为 NoError
以适应 MutableProperty
制作人的签名。
然后您可以使用以下方法观察来自其他地方的信号:
self.documentUpdateSignal?.observe(next: {
(var value: Int) in
println("Mutable property = \(value)")
}
)