在 iOS8 中使用 Home kit 框架设置家庭
Posted
技术标签:
【中文标题】在 iOS8 中使用 Home kit 框架设置家庭【英文标题】:Setting up home using Home kit framework in iOS8 【发布时间】:2014-07-07 09:44:05 【问题描述】:我想用HMHomeManager
和addHomeWithName
创建HMHome
。
HMHomeManager * myHomeManager;
[myHomeManager addHomeWithName:@"My Home" completionHandler:^(HMHome *home, NSError *error)
if (!error)
NSLog(@"Created Home : %@",home.name);
else
NSLog(@"Error : %@",[error localizedDescription]);
];
当应用程序运行时,我收到以下错误,而不是创建主页
Error : The operation couldn’t be completed. (HMErrorDomain error -70892.).
【问题讨论】:
仅供参考,您可以在 HMErrorDomain 类中找到错误标签。你的是:HMErrorUnconfiguredParameter (-70892)。不知道这是什么意思...您的代码没有在myHomeManager
上显示alloc]init]
...
HMHomeManager * myHomeManager = [HMHomeManager alloc]init];即使我已将其包含在我的应用程序中,我也会收到错误消息。
如果您@user3400046 同意以下答案,建议您接受该答案。
【参考方案1】:
让你的班级成为 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
您可以在任何您想要的功能中添加主页(即当用户点击“+”按钮将新主页插入到 tableview 列表中时)
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”:
-
选择您的应用目标。
选择“功能”标签。
将“HomeKit”切换为“开启”。
输入您的开发者 ID 等。
附上示例图片
【讨论】:
功能选项卡中的 HomeKit 设置为“开启”。即使我收到错误而不是创建主页。 添加了插入功能。 HMHomeManager 必须在您尝试使用它来添加新家之前完成初始化。当 homeManagerDidUpdateHomes 被调用时,你就知道初始化完成了 如果这是正确的答案,那么如果您将其标记为正确,那么它将对其他人有所帮助 那将是一个新问题。将此当前问题标记为正确(因为它回答了您的原始问题)并开始一个关于 addAccessory 问题的新问题。以上是关于在 iOS8 中使用 Home kit 框架设置家庭的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Swift 中使用网络扩展框架 iOS 8 设置 *** 连接