为什么我需要使用HMCharacteristic的readValue来获取当前值?

时间:2017-03-29 20:08:54

标签: swift homekit hmcharacteristic

在编写示例代码以了解HomeKit的工作原理时,如果我只使用.value属性,我发现我没有获得当前值,如:

let theValue = serviceCharacteristic.value

相反,我运行标准的Apple HomeKit应用程序,它似乎将所有内容与数据库同步,再次运行我的应用程序,现在我将获得当前值。

是否只能通过使用readValue才能真正获得设备特性的当前值?

func readValue(completionHandler completion: @escaping (Error?) -> Void)

如果没有,我应该使用其他什么方法?

2 个答案:

答案 0 :(得分:0)

是的,数据库保存有关特性的相对静态信息,例如它是可读还是可写,但不保存特征的当前实际值。为此,您需要与附件本身进行通信,readValue(和writeValue)可以实现这一点。这些由系统执行并与您的线程异步运行,因此您需要一个完成处理程序来在系统完成后接收结果并返回将它们传送到您的应用程序。

答案 1 :(得分:0)

是的,您必须读取值才能与设备通信并让它返回当前值。当你 writeValue 时,它​​应该返回请求是否成功。因此您无需在更改后再次阅读。

相关问题