Я создаю свой собственный "HouseKit" на основе HomeKit. Этот API позволит мне выполнять действия homekit очень быстро, например, light.on ().
Следовать моему объяснению и затем представить мою проблему здесь - пример моего публичного класса по управлению освещением. Это отлично работает.
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.
Вот мой полный класс для создания Дома:
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) ?")
self.house = home
}
else {
print("\(self.houseName) not found ?")
}
}
}
}
Тогда в моем ViewController:
var homeManager: HMHomeManager!
var myHome: AIAHouse!
override func viewDidLoad() {
super.viewDidLoad()
self.homeManager = HMHomeManager()
self.myHome = AIAHouse(houseName: "MyHome")
self.myHome.manager = HMHomeManager()
}
Моя проблема в том, что self.myHome.manager = HMHomeManager()
возвращает ноль, и я не понимаю, почему на самом деле ... Есть идеи? Большое спасибо заранее!