在我的应用程序中,我正在使用HomeKit。您可以添加/删除HMHome和HMRoom对象,但我还想为它们添加一些元数据。例如,在我的应用程序中,我希望能够向HMRoom添加图标并向其添加项目数组。
我的解决方案是我将它与CoreData结合使用并存储有关HMRoom的额外信息,但除了名称之外,无法识别HMHome和HMRoom对象。如果我的应用程序是世界上唯一的应用程序来编辑HomeKit对象,这不会有问题,但当然可能还有其他应用程序,也可以调整HMHome和HMRoom对象(删除它们,重命名它们。)
当用户执行以下操作之一时,我真的会遇到问题:
因为没有HMHome和HMRoom对象的已知标识符,我找不到我在CoreData中存储的元数据,并且元数据实际上已丢失,因为我无法再将名称与创建的HMRoom与我的数据相匹配CoreData数据库。
所以,我的问题是:有没有办法'识别'HMRoom和HMHome对象而不是他们的名字?
答案 0 :(得分:3)
在iOS9中,您可以使用uniqueIdentifier始终标识同一个对象。无论房间是否重命名,此UUID都保持不变。
答案 1 :(得分:1)
根据文档,HMHome
和HMRoom
没有其他标识符。但它们都具有accessories
属性,HMAccessory
具有identifier属性,这是持久的(至少在用户删除附件并再次添加之前,这不会是我希望看到一个常见的事情。
因此,您可以保存指定给定房屋或房间的配件以及其他元数据。如果家中或房间的名称发生变化,在大多数情况下,您仍然可以检测原始名称,查看存储的附件。