我的应用程序会上传联系人,并且将来需要更新它们。是使用ABRecordID
可靠的方法来识别人员,还是新记录可以获取已删除记录的 ID?
为了优化上传,我想只上传自上次上传以来修改或创建的记录。我目前正在使用核心数据存储此人的联系人副本。我想缩小我的应用程序的占用空间,加快扫描人员通讯录以查找修改/新联系人的执行时间,并限制需要上传的数量。在分析了一些人的通讯录之后,联系人的数量可以从 30 到 30,000 左右不等。处理 30,000 个联系人是一场噩梦。
我的应用程序会上传联系人,并且将来需要更新它们。是使用ABRecordID
可靠的方法来识别人员,还是新记录可以获取已删除记录的 ID?
为了优化上传,我想只上传自上次上传以来修改或创建的记录。我目前正在使用核心数据存储此人的联系人副本。我想缩小我的应用程序的占用空间,加快扫描人员通讯录以查找修改/新联系人的执行时间,并限制需要上传的数量。在分析了一些人的通讯录之后,联系人的数量可以从 30 到 30,000 左右不等。处理 30,000 个联系人是一场噩梦。
新记录不会获得先前与已删除记录关联的 id。ABRecordID
s 在这方面是独一无二的。但它们不一定随着时间的推移保持一致,有几件事可能会导致 id 发生变化。用户打开或关闭 iCloud 可能会导致 id 发生变化,从 iTunes 中恢复设备也可能如此。也就是说,ABRecordID
仍然是为联系人获取唯一 ID 的最佳选择。您只需要在使用它时仔细检查是否排列整齐。Apple 在地址簿编程指南中建议以下内容:
保持对特定记录的长期引用的推荐方法是存储名字和姓氏,或名字和姓氏的哈希值,以及标识符。当您按 ID 查找记录时,将记录的名称与您存储的名称进行比较。如果它们不匹配,则使用存储的名称查找记录,并存储记录的新 ID。