3

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

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

4

3 回答 3

2

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

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

只是需要注意的事情。

于 2009-08-11T10:23:10.687 回答
2

ABRecordID的最肯定会发生变化(通过艰难的方式了解到这一点 - 由于多台机器接触同步)

Matt Gemmell 在iphone-dev-tips-for-synced-contacts上有一篇不错的文章

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

如果我没有受到打击

 ABRecordRef aRef = ABAddressBookGetPersonWithRecordID(addressBook, aRecordId);

我使用一堆代码来查找姓氏、名字的潜在匹配项,然后通过电话号码对其进行优化。

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

于 2009-08-27T02:46:38.030 回答
0

ABRecordRef 有一个 ABRecordID 属性,您应该能够使用它来唯一地标识它以供以后访问。

于 2009-08-11T08:07:29.233 回答