我正在将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)
                }
            })
        }
    })
}

10-04 23:04