我想使用HMHome
和HMHomeManager
创建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.).
答案 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()
}
首次运行该应用时,应该有访问其“附件数据”的请求。
请务必点按“确定”。
另外:在您的应用权利下添加“HomeKit”:
示例图片附件