ios - ABRecordID 是识别唯一联系人的可靠方法吗?

标签 ios cocoa-touch contacts abaddressbook

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

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

最佳答案

新记录将不会获得先前与已删除记录关联的 ID。 ABRecordID 在这方面是独一无二的。但它们不一定会随着时间的推移保持一致,有几件事可能会导致 id 发生变化。用户打开或关闭 iCloud 可能会导致 id 发生变化,从 itunes 恢复设备可能也是如此。 也就是说,ABRecordID 仍然是为联系人获取唯一 ID 的最佳选择。您只需要在使用它时仔细检查是否排列整齐。 Apple 在地址簿编程指南中建议如下:

The recommended way to keep a long-term reference to a particular record is to store the first and last name, or a hash of the first and last name, in addition to the identifier. When you look up a record by ID, compare the record’s name to your stored name. If they don’t match, use the stored name to find the record, and store the new ID for the record.

关于ios - ABRecordID 是识别唯一联系人的可靠方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922150/

相关文章:

带有 Intent.ACTION_EDIT 的 Android 4 startActivityForResult 始终返回结果代码 RESULT_CANCELED

objective-c - 如何更改 UINavigationBar 标题标签大小?

ios - 如何避免 AVPlayerLayer `setPlayer` 音频信号?

ios - Kiwi 怎么处理?无法运行首次测试(通过 Cocoapods 安装)

iphone - 如何获得两地之间的行程?

ios - Objective-C 中应用程序的切换屏幕和转换屏幕

iphone - 横向模式下帧大小不会改变

java - 在Android中检索联系人数据库的大小或修改时间

ios - 使用静态库进行单元测试

编译 : near "*": syntax error: , _id 时出现 android.database.sqlite.SQLiteException : SELECT calls.