【发布时间】:2020-01-22 20:21:38
【问题描述】:
我有一个管理器类,它将连接和管理蓝牙设备的数据和状态。
管理器类符合 IWDeviceManagerDelegate 并且有一个方法可以提供权重数据func onReceiveWeightData(_ device: IWDevice!, data: IWWeightData!)。
一旦我从任何控制器调用listenToWeight(),我想使用 Observable 提供数据。
如何使用onReceiveWeightData 方法的数据触发 onNext 事件到listenToWeight observable?
下面是代码。
class WeightMachineManager: NSObject {
func setup() {
IWDeviceManager.shared()?.delegate = self
IWDeviceManager.shared()?.initMgr()
}
func listenToWeight() -> Observable<IWWeightData> {
let tag = WeightMachineManager.tag
if let connectedDevice = connectedDevice {
IWDeviceManager.shared()?.add(connectedDevice, callback: { (device, code) in
if code == .success {
print("\(tag)[SUCCESS] Device added successfully.")
} else {
print("\(tag)[FAILURE] Failed to add device.")
}
})
} else {
print("\(tag)[FAILURE] Couldn't find any device to connect.")
}
}
}
extension WeightMachineManager: IWDeviceManagerDelegate {
func onReceiveWeightData(_ device: IWDevice!, data: IWWeightData!) {
// TODO:- Pass this data in the onNext event of listenToWeight's observable.
}
}
【问题讨论】:
-
什么是
ICDeviceManager?什么是IWDeviceManagerDelegate?它们是否以某种方式相互关联?你的listenToWeight()永远不会返回任何东西。 -
@DanielT。是的,它们彼此相关。
IWDeviceManager连接到硬件的经理。IWDeviceManagerDelegate是协议。该协议具有返回重量数据的方法。我不知道在listenToWeight()方法中返回什么,因为我只分配必须测量重量的设备。 devices sdk 在IWDeviceManagerDelegate's方法中返回权重。 -
答案可以在这里找到:stackoverflow.com/questions/51816144/…
-
感谢您的帖子,如果您不介意可以在我的代码中显示这个吗????
标签: swift observable rx-swift reactive