ネットワーク リクエストの後にオブジェクトを初期化する API 呼び出しをラップしようとしています。新しいオブザーバーごとにネットワーク要求が発生することを望まないので、私が理解しているように、SignalProducer
. ただし、単一Signal
の を使用すると、最初の使用のみがnext
イベントを受け取り、新しいサブスクライバーは現在の値を受け取ることはありません。これをどのように行う必要がありますか?私はおそらく、RAC で根本的に間違ったことをしているのでしょう。
extension SparkDevice {
static func createMainDeviceSignal() -> Signal<SparkDevice, NSError> {
return Signal {
sink in
SparkCloud.sharedInstance().getDevices { (sparkDevices: [AnyObject]!, error: NSError!) -> Void in
if let error = error {
sink.sendFailed(error)
}
else {
if let devices = sparkDevices as? [SparkDevice] {
if devices.count > 0 {
sink.sendNext(devices[0])
}
}
}
}
return nil
}
}
}
class DeviceAccess {
let deviceSignal: Signal<SparkDevice, NSError>
init() {
self.deviceSignal = SparkDevice.createMainDeviceSignal()
}
}
の使用を検討しMutableProperty
ましたが、これには意味がないように見えるデフォルト プロパティが必要なようです。
これについて実際にどうすればよいですか?