将联系人列表保存到NSUserDefaults

问题描述:

使用iPhone的内置地址簿框架,如何在NSUserDefaults中将联系人的特定列表保存到数组?我需要保存收件人列表供以后使用。将联系人列表保存到NSUserDefaults

我想确保在应用程序关闭后用户编辑联系人时不会遇到问题。是否有某种每个联系人都有的唯一ID,以后我可以保存并查找?

ABRecordID最肯定做改变(这已经了解到硬盘的方式 - 为多机联系人同步的结果)

马特Gemmell具有iphone-dev-tips-for-synced-contacts

一个很好的书面记录,我不存储复合名称,而是ABRecordId,名字,姓氏,电子邮件地址和电话号码(最后两个由我的应用程序直接使用)。

如果我不上

ABRecordRef aRef = ABAddressBookGetPersonWithRecordID(addressBook, aRecordId); 

我用一串代码,以找到姓,名潜在的匹配,然后通过电话号码完善它得到一击。

作为最后一项,我将联系人生成的UUID关联起来,以便将所有这些(可能)模糊分辨率从我与联系人关联的数据中抽象出来。

ABRecordRef有一个ABRecordID属性,您应该可以使用它来唯一标识它以便以后访问。

+0

如上所述,由于同步,这是不可靠的。或许在09年,情况并非如此。 – MrTristan 2013-08-28 13:13:56

要小心这个,我相信有一个问题(至少在OS3.0之前),当用户同步他们的设备时,这个ABRecordID可能会改变。如果你依靠再次使用该ID,这显然会导致问题。我不知道这是否仍然在OS3.0中发生。

http://discussions.apple.com/thread.jspa?threadID=1771736

只是要注意。