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

问题描述 投票:0回答:3

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

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

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

所以,我的问题是:有没有办法“识别”除名称之外的 HMRoom 和 HMHome 对象?

ios core-data homekit
3个回答
3
投票


1
投票
HMHome

HMRoom
没有其他标识符。但它们都具有
accessories
属性,并且
HMAccessory
具有
identifier
属性,该属性是持久的(至少直到用户删除附件并再次添加它为止,我希望这不会是常见的事情) ). 因此,您可以保存分配给给定家庭或房间的配件以及其他元数据。如果房屋或房间的名称发生变化,在大多数情况下,您仍然应该能够通过查看存储的配件来检测原始名称是什么。


0
投票
matterControllerID

来识别房屋。它对于每个家庭来说都是独一无二的,并且在不同设备上都是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.