问题描述
它收集旧值。
如果我在本机 Home 应用程序中更改灯光的亮度(存储在 lightData[0] 中的相同灯光)并返回到我的应用程序并调用以下函数,它会显示正确的值。
readValue 假设直接从配件中获取价值,而不是从 iPhone 中的缓冲区。
func getThem() {
lightData[0].characteristic.readValue(completionHandler: {(error) in
if error != nil {
print(error!.localizedDescription)
} else {
let type = self.lightData[0].characteristic.value
guard let value = (type as? NSNumber)?.intValue
else {
return
}
print("values = \(value)")
}
})
}
附注: (我在这里只展示了 lightData[0] 以使代码更具可读性,应用程序收集并存储所有灯光 应用启动时 func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {} 处的 lightData 结构数组中的数据)
解决方法
我“发现”如果灯泡的电源状态为 0,您将无法读取或写入亮度级别。
为了解决这个问题,我读取了电源状态,如果它是 0,我首先将其更改为 1,然后更改亮度级别。
当电源状态为 0 时读取亮度级别只是为了在屏幕上显示 我刚刚在我的指示系统中将其设为 0。
很遗憾我无法在文档中阅读此内容。