HomeKit HMHome和HMRoom标识符/额外元数据

Wim*_*tra 5 core-data ios homekit

在我的应用程序中,我正在使用HomeKit.您可以添加/删除HMHome和HMRoom对象,但我还想为它们添加一些元数据.例如,在我的应用程序中,我希望能够向HMRoom添加图标并向其添加项目数组.

我的解决方案是我将它与CoreData结合使用并存储有关HMRoom的额外信息,但除了名称之外,无法识别HMHome和HMRoom对象.如果我的应用程序是世界上唯一编辑HomeKit对象的应用程序,那么这不会成为问题,但当然可能还有其他应用程序,也可以调整HMHome和HMRoom对象(删除它们,重命名它们).

当用户执行以下操作之一时,我真的会遇到问题:

  1. 开始我的申请
  2. 添加HMHome和HMRoom对象
  3. 通过我的应用程序向HMRoom对象添加一些元数据,该应用程序存储在我的CoreData数据库中
  4. 退出我的申请
  5. 启动另一个应用程序并重命名刚刚创建的HMRoom
  6. 再次启动我的应用程序

因为HMHome和HMRoom对象没有已知的标识符,所以我找不到我在CoreData中存储的元数据,并且元数据实际上已丢失,因为我无法再将创建的HMRoom的名称与我的CoreData数据库中的数据匹配.

所以,我的问题是:有没有办法'识别'HMRoom和HMHome对象而不是他们的名字?

Mic*_*uba 1

根据文档,除了名称之外HMHome没有其他标识符。HMRoom但它们都具有accessories属性,并且 HMAccessory具有标识符属性,该属性是持久的(至少直到用户删除附件并再次添加它为止,我希望这不会是常见的事情)。

因此,您可以保存分配给给定家庭或房间的配件以及其他元数据。如果房屋或房间的名称发生变化,在大多数情况下,您仍然应该能够通过查看存储的配件来检测原始名称是什么。