ABRecordID是识别唯一联系人的可靠方式吗?

16

我的应用程序上传联系人,并且未来需要更新它们。使用 ABRecordID 是否是一种可靠的识别人员的方法,或者可能会出现新记录获得已删除记录的 ID 的情况?

为了优化上传,我想仅上传自上次上传以来已被修改或创建的记录。我目前正在使用核心数据存储该人的联系人副本。我想缩小应用程序的占用空间并加快扫描联系人地址簿以寻找已修改/新增联系人的执行时间,并限制需要上传的数量。经过分析,某些人的通讯录联系人数可以从30个到约30,000个不等。处理30,000个联系人是一场噩梦。

1个回答

16
一个新的记录不会获得之前与已删除记录关联的ID。在这方面,ABRecordID是唯一的。但是它们并不一定始终保持一致,有几件事可能会导致id更改。用户打开或关闭iCloud可能会导致id更改,从itunes还原设备也可能会导致更改。
话虽如此,ABRecordID仍然是获取联系人唯一ID的最佳方法。使用时只需仔细核对即可。苹果在地址簿编程指南中建议以下操作:
引用:

保留对特定记录的长期引用的推荐方法是除了标识符之外,还要存储第一个和姓氏、或者第一个和姓氏的hash值。通过ID查找记录时,请将记录的名称与您存储的名称进行比较。如果它们不匹配,请使用存储的名称查找记录,并为记录存储新ID。


1
参考:https://developer.apple.com/library/ios/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html - rjobidon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接