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

时间:2015-02-14 06:57:01

标签: ios core-data homekit

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

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

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

  1. 启动我的申请
  2. 添加HMHome和HMRoom对象
  3. 通过我的应用程序向HMRoom对象添加一些元数据,该应用程序存储在我的CoreData数据库中
  4. 退出我的申请
  5. 启动另一个应用程序并重命名刚刚创建的HMRoom
  6. 再次启动我的申请
  7. 因为没有HMHome和HMRoom对象的已知标识符,我找不到我在CoreData中存储的元数据,并且元数据实际上已丢失,因为我无法再将名称与创建的HMRoom与我的数据相匹配CoreData数据库。

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

2 个答案:

答案 0 :(得分:3)

在iOS9中,您可以使用uniqueIdentifier始终标识同一个对象。无论房间是否重命名,此UUID都保持不变。

答案 1 :(得分:1)

根据文档,HMHomeHMRoom没有其他标识符。但它们都具有accessories属性,HMAccessory具有identifier属性,这是持久的(至少在用户删除附件并再次添加之前,这不会是我希望看到一个常见的事情。

因此,您可以保存指定给定房屋或房间的配件以及其他元数据。如果家中或房间的名称发生变化,在大多数情况下,您仍然可以检测原始名称,查看存储的附件。