首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HomeKit模拟器中添加服务后,附加附件没有可用的服务?

在HomeKit模拟器中添加服务后,附加附件没有可用的服务?
EN

Stack Overflow用户
提问于 2016-10-03 15:41:47
回答 1查看 277关注 0票数 0

因此,我试图编写一个简单的应用程序来控制我的家庭工具包设备,但我在代码方面遇到了麻烦。

这是我浏览家庭套件配件的代码。但当我

代码语言:javascript
复制
print(accessory.services.count)

我得到0。以下是我的一些代码:

代码语言:javascript
复制
import UIKit
import HomeKit

class DiscoveryTableViewController: UITableViewController, HMAccessoryBrowserDelegate {

//outlets
@IBAction func backButton(_ sender: AnyObject) {
    navigationController?.dismiss(animated: true, completion: nil)
}

@IBOutlet weak var saveButton: UIBarButtonItem!



let homeManager = HMHomeManager()
let browser = HMAccessoryBrowser()

var accessories = [HMAccessory]()
var selectedAcc: HMAccessory?

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    //setting the title to "Searching..."
    title = "Searching..."

    //setting the browser delegate = to self
    browser.delegate = self
    //searching for accessories
    browser.startSearchingForNewAccessories()

    //only searching for a short time to be efficient
    Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(DiscoveryTableViewController.stopSearching), userInfo: nil, repeats: false)


}



func stopSearching() {
    title = "Discovered"
    browser.stopSearchingForNewAccessories()
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return accessories.count

}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellIdentifier = "DiscoveryTableViewCell"
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! DiscoveryTableViewCell
    let accessory = accessories[(indexPath as NSIndexPath).row] as HMAccessory

    // Configure the cell...
    cell.discNameLabel.text = accessory.name

    //print(accessory.services.count)

    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selectedAcc = accessories[indexPath.row]
    performSegue(withIdentifier: "showDeviceDetail", sender: self)
    //performSegue(withIdentifier: "UnwindToDeviceTable", sender: self)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDeviceDetail" {
        if let destination = segue.destination as? AddDeviceViewController {
            destination.addedAcc = selectedAcc
        }
    }
}


// Informs us when we've located a new accessory in the home
func accessoryBrowser(_ browser: HMAccessoryBrowser, didFindNewAccessory accessory: HMAccessory) {
    accessories.append(accessory)

    //PRINTING SERVICES.COUNT
    print(accessory.services.count)
    tableView.reloadData()
}



func accessoryBrowser(_ browser: HMAccessoryBrowser, didRemoveNewAccessory accessory: HMAccessory) {
    var index = 0
    for item in accessories {
        if item.name == accessory.name {
            accessories.remove(at: index)
            break; // done
        }
        index += 1
    }
    tableView.reloadData()
}


}

在这节课上,我浏览我所有的配件。我可以访问所有设备的所有名称,但是当我打印"services.count“时,每次都得到0。有人能帮忙吗?是的,我已经在HomeKit模拟器的每个附件下添加了服务和特性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-04 18:28:39

我刚刚确认了这一点,在您将附件添加到家庭之后才能提供服务,这意味着您已与附件配对:

代码语言:javascript
复制
homeManagerInstance.primaryHome?.addAccessory(accessory, completionHandler: { (error) in
   print("ACCESSORY SERVICES: \(accessory.services.count)")
})

如果在此之前尝试检查service.count,它确实会以零的形式返回。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39835415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档