使用iOS8中的Home kit框架设置home

时间:2014-07-07 09:44:06

标签: ios homekit

我想使用HMHomeHMHomeManager创建addHomeWithName

HMHomeManager * myHomeManager;

[myHomeManager addHomeWithName:@"My Home" completionHandler:^(HMHome *home, NSError *error) 
{

    if (!error) {
        NSLog(@"Created Home : %@",home.name);

    } else {

        NSLog(@"Error : %@",[error localizedDescription]);
    }
}];

运行应用程序时,我收到以下错误,而不是创建Home

Error : The operation couldn’t be completed. (HMErrorDomain error -70892.).

1 个答案:

答案 0 :(得分:7)

使您的类成为HMHomeManager委托:

import UIKit
import HomeKit

class HomeManagerViewController: UITableViewController, HMHomeManagerDelegate {

    var homeViewController: HomeViewController? = nil
    var myHomeManager:HMHomeManager? = nil

    var homes = [AnyObject]()   // datasource for tableview

您的HMHomeManager必须先进行初始化(您已经提到过您已经完成此操作),并且您的课程已设置为其代表。

override func viewDidLoad() {
    super.viewDidLoad()

    myHomeManager = HMHomeManager()
    myHomeManager!.delegate = self

您可以在所需的任何功能中添加主页(即,当用户点击“+”按钮将新主页插入到表格视图列表中时)

HMHomeManager必须有时间连接到homekit数据库

func insertNewObject(sender: AnyObject)
{
    myHomeManager!.addHomeWithName( uniqueHomeName , completionHandler: { (home: HMHome!, error: NSError!) -> Void in

        if (error != nil)
        {
            // adding the home failed; check error for why
            NSLog("Error : %@",[error.localizedDescription])
        }
        else
        {
            // success!

            // Insert home at bottom of datasource array and bottom of tableview cells
            self.homes.append(home)

            let indexPath = NSIndexPath(forRow: self.homes.count-1, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }
    })
}

然后在homeManagerDidUpdateHomes委托方法中更新tableviews数据源。

当HMHomeManager完成初始化时调用此函数,并为您提供任何先前添加的房屋的数组

    // #pragma mark - HMHomeManager Delegate

func homeManagerDidUpdateHomes(manager: HMHomeManager!) {

    self.homes = manager!.homes

    self.tableView.reloadData()
}

首次运行该应用时,应该有访问其“附件数据”的请求。

请务必点按“确定”。

Accessory Data

另外:在您的应用权利下添加“HomeKit”:

  1. 选择您的应用目标
  2. 选择“功能”标签。
  3. 将“ HomeKit ”切换为“开启”。
  4. 输入您的开发者ID等
  5. 示例图片附件

    Adding HomeKit Entitlements