iphone - 与 ABPerson 交往的正确方式是什么?

标签 iphone

在我的许多应用程序中,它需要将一些数据与地址簿中的联系人关联起来。我过去所做的就是保存 ABPerson 的记录 ID,并使用该 ID 在每次应用程序启动时提取信息。然而,我越来越发现这种方法是错误的,因为很多时候用户会使用像 mobileme 这样的服务,其中地址簿会被删除并重新同步。这会导致记录 ID 更改并且所有关联都会丢失。用户必须仔细检查每一项并重新链接它们。

保存指向地址簿条目的稳健指针的更好方法是什么?

最佳答案

您应该存储三个值:记录 ID、名字和姓氏。

1) 如果记录 ID 没有更改,那么您就很出色 - 只需使用它来查找正确的记录即可。

2) 如果 ABAddressBookGetPersonWithRecordID() 没有找到您存储的记录 ID 的记录(它返回 NULL),那么您需要根据第一个和姓。如果您已经拥有一个包含内存中所有人员记录的数组,则可以直接使用 ABAddressBookCopyPeopleWithName() 或编写自己的定位代码。找到新记录由您决定。找到新记录后,您可以使用新记录 ID 更新数据存储。

最终,您最终会存储记录 ID 以直接使用,以防它不会更改(如果您幸运的话),并存储地址簿条目中不太可能更改的一些键。与地址簿条目关联的个人或组织的名称最有可能改变。当然,您应该考虑到可能无法通过存储的记录 ID 或通过搜索名称找到记录的情况。这可能意味着该记录已被删除,也可能意味着该记录已被重命名。您应该以您认为最适合您的特定应用程序的方式来处理这种情况。

关于iphone - 与 ABPerson 交往的正确方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1766368/

相关文章:

javascript - requirejs 需要文字!相对路径在 iphone 上导致非规范化错误,bet 在模拟器上工作

iphone - PhoneGap可以访问iPhone的语音识别软件吗?

ios - SDK 'iOS 8.4' 不允许临时代码签名

iphone - 如何在 iPhone 应用程序中创建多个包?

iphone - 2 个相似的 iOS 应用程序 - 管理它们的最佳方式是什么?

iphone - iOS 上的图像过滤选项

iphone - 如何在iphone的sqlite表中获取最后10条添加的记录

iphone - 检测 UITableViewCell 的拖动事件

iphone - 我们可以使用 iPhone 的 youtube api 仅播放音频吗

javascript - 你能用 Javascript 从 iPhone 上的网络摄像头捕获图像吗?