在我的应用程序中,我使用HomeKit。您可以添加/删除HMHome和HMRoom对象,但我也想向它们添加一些元数据。例如,在我的应用程序中,我希望能够向HMRoom添加一个图标,并向它添加一个条目数组。
我的解决方案是将它与CoreData结合使用,并存储关于HMRoom的额外信息,但是除了名称之外,没有其他方法可以识别HMHome和HMRoom对象。如果我的应用程序是世界上唯一编辑对象的应用程序,那么这不会是一个问题,但是当然还有其他应用程序,也可以调整HMHome和HMRoom对象(删除它们,重命名它们)。
因此,当用户做以下事情之一时,我会遇到一个问题:
因为HMHome和HMRoom对象没有已知的标识符,所以我再也找不到存储在CoreData中的元数据了,元数据实际上也丢失了,因为我不能再将创建的HMRoom名称与HMRoom数据库中的数据相匹配。
因此,我的问题是:是否有一种方法可以“识别”HMRoom和HMHome对象,而不是它们的名称?
发布于 2015-12-10 15:58:05
在iOS9中,您可以使用uniqueIdentifier始终标识同一个对象。无论房间被重命名,这个UUID都保持不变。
发布于 2015-02-15 20:26:34
根据文档,除了名称之外,HMHome和HMRoom没有其他标识符。但它们都具有accessories属性,HMAccessory具有标识符属性,该属性是持久的(至少在用户删除附件并再次添加附件之前,我希望这不是常见的事情)。
这样,您就可以保存分配给给定的家庭或房间的附件以及其他元数据。如果家庭或房间的名称发生变化,在大多数情况下,您仍然应该能够检测到原来的名称是什么,看看存储的附件。
https://stackoverflow.com/questions/28513303
复制相似问题