与ABPerson联系的正确方法是什么?

ero*_*ppa 4 iphone

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

保存地址簿条目的强大指针有什么更好的方法?

Bry*_*nry 5

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

1)如果记录ID没有改变,你就是黄金 - 只需使用它来找到正确的记录.

2)如果ABAddressBookGetPersonWithRecordID()没有找到您存储的记录ID的记录(它返回NULL),那么您需要根据姓名和姓氏搜索人员记录.ABAddressBookCopyPeopleWithName()如果已经有一个包含内存中所有人员记录的数组,您可以下载到潜在使用或编写自己的定位代码.找到新记录取决于您.找到新记录后,您可以使用新记录ID更新数据存储.

最终,您最终存储记录ID以直接使用,如果它没有改变(如果您很幸运),另外存储一些不太可能改变的地址簿条目中的密钥.与地址簿条目关联的人员或组织的名称最有可能更改.当然,您应该考虑到您可能找不到包含存储记录ID的记录或搜索名称的情况.这可能意味着记录被删除,或者可能意味着记录被重命名.无论您决定哪种方式最适合您的特定应用,您都应该处理这种情况.