到目前为止,我已经实现了一个可以创建HMActionSets的应用程序,它们被添加到HomeKit,它们也可以被执行(值在配件模拟器中相应地改变)。但是,我遇到一个奇怪的问题:每当我打电话
lldb-rpc-server
(我没有回复错误,动作集实际上已被执行)。但是,然后我再回头看看我的HMHome.actionSets数组,并检查
override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(copy(_:)) || action == #selector(paste(_:)) || action == #selector(selectAll(_:)) || action == #selector(cut(_:))
{
return false
}
return super.canPerformAction(action, withSender: sender)
}
属性 - >但它总是func executeActionSet(HMActionSet, completionHandler: (Error?) -> Void)
。
你知道我可能做错了吗?
答案 0 :(得分:1)
可悲的是,我无法弄清楚为什么这个属性总是错误的。 但是,如果您想知道当前是否正在执行场景,我找到了一种解决方法:
只需遍历HMActionSet的所有HMAction,检查HMAction的targetValue是否与相关特征的当前值相同,并且只有当所有指定的特征和值都相同时,才可以说:HMActionSet XYZ正在执行。显然,官方家庭应用程序也是这样做的。 (在HomeKit的Apple开发者论坛上找到)