在编写示例代码以了解HomeKit如何工作时,我发现如果我只使用.value属性(如:
let theValue = serviceCharacteristic.value相反,我会运行标准的Apple HomeKit应用程序,它似乎将所有内容同步到数据库,再次运行我的应用程序,现在我将得到当前的值。
只有使用readValue才能真正得到设备特性的当前值吗?
func readValue(completionHandler completion: @escaping (Error?) -> Void)如果没有,我还应该用什么方法呢?
发布于 2017-04-27 22:37:18
是的,数据库保存有关特征的相对静态信息,例如它是可读的还是可写的,但是不保存特征的当前实际值。为此,您需要与附件本身进行通信,而readValue (和writeValue)实现了这一点。这些由系统执行,并异步运行到线程,因此您需要一个完成处理程序来接收系统完成后的结果,并返回到您的应用程序。
发布于 2021-04-08 14:53:48
是的,您必须使用readValue来与设备通信,并让它返回当前值。当您使用writeValue时,它应该返回请求是否成功。所以你不需要在改变后再读一遍。
https://stackoverflow.com/questions/43103188
复制相似问题