HMHomeManager返回零

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HMHomeManager返回零相关的知识,希望对你有一定的参考价值。

我正在创建基于HomeKit的自己的“HouseKit”。这个api允许我像light.on()那样非常快地执行homekit动作。

按照我的解释,然后在这里介绍我的问题是我的灯管理公共课的一个例子。这很好用。

public class AIALight: AIAEquipment {

    // MARK: - Initialization
    public init(kind: Kind, name: String) {
        super.init(.light, equipmentName: name)
    }

}

extension AIALight: AIAControllable {

    public enum Order: AIAOrder {

        // MARK: - Values
        case on
        case off

        var info: (Int) {
            switch self {
            case .on:
                return 1
            case .off:
                return 0
            }
        }
    }
}

然后创造一个光......

var myLight = AIALight(kind: .light, name: "Sdb1")

......并在需要时发送订单:

self.myLight.set(.on, completion: nil)

好了,现在保持相同的想法,我希望能够创建房屋和房间。对于家庭HMHomeManagerDelegate,当然还有HMHomeManager。

这是我创建一个Home的完全自己的类:

import Foundation
import HomeKit

public final class AIAHouse: HMHome, HMHomeManagerDelegate {

    public var house: HMHome!
    public let houseName: String

    public var manager: HMHomeManager? {
        didSet {
            self.manager?.delegate = self
        }
    }

    // MARK: - Initialization
    public init(houseName: String) {
        self.manager = nil
        self.houseName = houseName
    }

    public func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {

        //We browse HMHome to find CruzHouse already set via Home App on ios
        for home in manager.homes as [HMHome]{
            if home.name == self.houseName{

                print("Found the expected home: (self.houseName) 
答案

从Apple文档:

你不直接创建家园 - 而是用addHome(withName:completionHandler:)HMHomeManager方法创建它们。

如果你的AIAHouse对象继承自NSObject而不是HMHome,你的代码将被编译。

以上是关于HMHomeManager返回零的主要内容,如果未能解决你的问题,请参考以下文章

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

如何优化C ++代码的以下片段 - 卷中的零交叉

无法通过 ListView 搜索,返回零结果

为啥此代码片段返回意外结果?

替换从 VAST 代码返回的多个 HLS VOD 片段