Swift 为什么我需要使用HMCharacteristic';s readValue以获取当前值?

Swift 为什么我需要使用HMCharacteristic';s readValue以获取当前值?,swift,homekit,hmcharacteristic,Swift,Homekit,Hmcharacteristic,在编写示例代码以了解HomeKit的工作原理时,我发现如果只使用.value属性,则无法获取当前值,例如: let theValue = serviceCharacteristic.value 相反,我会运行标准的Apple HomeKit应用程序,它似乎会将所有内容与数据库同步,再次运行我的应用程序,现在我将获得当前值 只有使用readValue才能真正获得设备特性的当前值吗 func readValue(completionHandler completion: @escaping (Er

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

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

只有使用readValue才能真正获得设备特性的当前值吗

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

如果不是,我应该使用什么其他方法?

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

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

readValue不确保它是当前值eitherGaaa!!!这不是我的答案。我不知道我是如何“偷”它的,也不知道如何修复它。很抱歉