地址簿联系人是否有“uniqueID”类型属性?

时间:2012-10-28 02:11:39

标签: objective-c ios addressbook uniqueidentifier abaddressbook

我正在制作一个涉及用户联系人的游戏,但需要一种方法来唯一识别每个联系人。这是因为用户可以轻松更改给定联系人的姓名,电话号码或其他属性。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

您可以使用ABRecordGetRecordID()获取记录的唯一ID。它返回ABRecordID,这是int32_t的typedef。

答案 1 :(得分:2)

ABRecordGetRecordID()是您可以使用的API。但是,Apple文档确实指出了有关此API返回的ABRecordID的一些值得注意的要点。

  

通讯簿数据库中的每条记录都有唯一的记录标识符。除非删除该记录或重置数据,否则此标识符始终引用相同的记录。记录标识符可以在线程之间安全地传递。不保证它们在不同设备上保持不变。

根据苹果指南建议的方法是

  

保持对特定记录的长期引用的推荐方法是除了标识符之外还存储名字和姓氏,或者名字和姓氏的哈希值。按ID查找记录时,请将记录的名称与存储的名称进行比较。如果它们不匹配,请使用存储的名称查找记录,并存储记录的新ID。

在我的应用程序中,我还在检查联系人的创建日期,因为ABRecordID的名称可能已被用户更改。联系人的创建日期不会在设备重置时更改。

Though I have pasted most of the content here, its always advised to read the documentation