【发布时间】:2013-02-08 00:24:46
【问题描述】:
鉴于 ABRecordID 可能会在云同步之间发生变化以及在我无法控制的其他情况下,我如何保持对 IOS 通讯录记录的长期引用?
Apple 提供以下指导:
“保持对特定记录的长期引用的推荐方法是存储名字和姓氏,或名字和姓氏的哈希值,以及标识符。当您通过以下方式查找记录时ID,将记录的名称与您存储的名称进行比较。如果它们不匹配,则使用存储的名称查找记录,并为记录存储新的 ID。"
但我不明白这个指导。如果地址簿中可以有重复的名称,并且由于用户可以修改记录中的名称,那么这个建议如何工作?
例如,如果用户修改了地址簿记录的名称,我的例程将无法通过 ABRecordID 找到它,所以如果我认为按我存储的名称哈希搜索我找不到重复的名称而不是新的 ABRecordID对于我之前引用的特定记录?
最后,获得对 IOS 地址簿记录的长期引用的最佳方法是什么?如果上述建议确实有效,我错过了什么?
【问题讨论】:
-
您能否更具体地说明您要使用永久 ID 完成的工作?如果将其链接到另一个服务、数据库,也许更好的方法是在联系人上创建一些可以跟踪它的东西。真正可悲的是,这在 mac 上不是问题。请参阅:blog.clickablebliss.com/2011/11/07/… 了解更多信息
-
@RichDominelli 我正在尝试将应用程序设置数据与每个联系人相关联,这些联系人可以在恢复或云同步以及重命名和更新后幸存下来。
-
目前 iOS 不支持每条记录的 uuid 也不支持自定义字段。您可以尝试生成哈希,但正如您所指出的那样,它并不完美。您还可以输入一个自定义标签电话号码,该电话号码对每条记录都是唯一的,但用户也可以轻松破解它。
标签: iphone ios objective-c