我正在将Xcode 7.2与HomeKit Accessory Simulator Version 1.3(77.1)一起使用
我的HomeKit代码中包含以下代码
//MARK: UITableViewDelegate
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let accessory = accessories[indexPath.row] as HMAccessory
if let room = homeManager.primaryHome?.rooms.first as HMRoom? {
homeManager.primaryHome?.addAccessory(accessory, completionHandler: { (error) -> Void in
if error != nil {
print("Issues adding accessory to home. \(error?.localizedDescription)")
} else {
self.homeManager.primaryHome?.assignAccessory(accessory, toRoom: room, completionHandler: { (error) -> Void in
if error != nil {
print("Issues adding accessory to room. \(error?.localizedDescription)")
} else {
self.navigationController?.popViewControllerAnimated(true)
}
})
}
})
}
}
当我单击UITableViewCell时,它会弹出“添加附件”对话框,并在输入配对/设置代码后出现错误:
出现向家中添加配件的问题。可选(“正在进行的操作。”)
在其他时候我得到
出现向家中添加配件的问题。可选(“客户端请求错误
与附件通信。”)
当我在iPhone(iOS 9.2.1)上运行相同的代码时,出现以下错误
尝试建立我们的房屋时出了点问题。
可选(“正在进行云数据同步。”)
这是HomeKit中的已知问题吗?还是HomeKit硬件模拟器中的错误?有解决方法/修复程序吗?
最佳答案
你可能需要改变
if let room = homeManager.primaryHome?.rooms.first as HMRoom? {
至
if let room = homeManager.primaryHome?.rooms.first as? HMRoom {
如果我正确阅读此代码?
但是,如果条件是分开的,并且您使用的是未包装的对象,那么它将更具可读性和调试性。假设HMRoom是一类:
if let home = homeManager.primaryHome,
room = home.rooms.first as? HMRoom {
home.addAccessory(accessory, completionHandler: { (error) -> Void in
if error != nil {
print("Issues adding accessory to home. \(error?.localizedDescription)")
} else {
home.assignAccessory(accessory, toRoom: room, completionHandler: { (error) -> Void in
if error != nil {
print("Issues adding accessory to room. \(error?.localizedDescription)")
} else {
self.navigationController?.popViewControllerAnimated(true)
}
})
}
})
}