Swift3 如何处理Homekit配对过程中的任何错误

Swift3 如何处理Homekit配对过程中的任何错误,swift3,ios10,Swift3,Ios10,如何在swift 3中使用给定的方法 func addAndSetupAccessories(completionHandler完成:(错误?->无效) 我观察到,尽管HomeKit设置页面(iOS 10中HomeKit附件配对的初始页面)在前面,并且附件配对过程没有结束,但立即调用了完成处理程序。如果是这种情况,如何在设置过程完成后调用任何操作?如何获取设置过程是否已结束???处理该过程的唯一方法是在调用addAndSetupAccessories之前将HMHomeDelegate分配给目标H

如何在swift 3中使用给定的方法

func addAndSetupAccessories(completionHandler完成:(错误?->无效)


我观察到,尽管HomeKit设置页面(iOS 10中HomeKit附件配对的初始页面)在前面,并且附件配对过程没有结束,但立即调用了完成处理程序。如果是这种情况,如何在设置过程完成后调用任何操作?如何获取设置过程是否已结束???

处理该过程的唯一方法是在调用
addAndSetupAccessories
之前将
HMHomeDelegate
分配给目标
HMHome
对象,并跟踪添加的附件。该对话框一次只允许设置一个附件,因此您最多只能获得一个非桥接附件,并且可能会获得零个或多个桥接附件

当承载进程的视图控制器第二次调用时,请检查是否设置了非桥接附件。如果没有,它要么被取消,要么以错误结束,而苹果的对话框已经处理了这个问题

请注意,这在iPad上不起作用,因为它会显示一个弹出窗口,所以在取消配对对话框时不会调用
viewdideappear
。我不确定是否有可能在iPad上发现这个过程何时结束

更新

iOS 10.3完全改变了这种行为,现在当配对对话框关闭时(
addAndSetupAccessories
)的完成处理程序被调用(应该是从一开始)。如果未配对任何内容,回调将得到一个错误,代码为23,
HMError.operationCancelled

您仍然需要通过
HMHomeDelegate
回调跟踪添加的附件,但安装后处理应该从
viewwillbeen
移动到
addandsetupassociates
回调


令任何人惊讶的是,在任何发行说明中都没有记录或提及它。

通过使用委托方法“func home(uu home:HMHome,diddad association:hmassociation)”成功地处理了完成。添加附件后,将调用此方法。要使其正常工作,我们需要将对象设置为HMHome.iOS 10.3的HMHome代理,以更改此行为。