4

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

4

2 回答 2

4

您可以使用ABRecordGetRecordID()来获取记录的唯一 ID。它返回一个ABRecordID类型定义为int32_t.

于 2012-10-28T02:15:06.040 回答
2

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

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

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

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

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

虽然我在这里粘贴了大部分内容,但始终建议阅读文档

于 2014-11-27T18:57:56.120 回答