CNContact 设备之间的唯一 ID

use*_*911 5 contacts ios swift contacts-framework

我在尝试访问多个设备之间的同一个联系人时遇到了一些问题。我的目标是让用户选择联系人并选择电话号码和电子邮件地址,然后将其存储在数据库中。如果用户在另一台设备上打开应用程序,我希望选择相同的联系人。

我希望在这种情况下使用 CNContact.identifier,但它似乎是设备特定的 id。我可以存储每个设备的标识符,但这需要用户匹配联系人,这并不理想。

这看起来并不困难,但显然我错过了一些东西。想法?

use*_*911 1

适合我的解决方案是,我将联系人标识符、地址标识符、联系人姓名和地址存储在我的数据库中。然后我采取多步骤方法。

搜索联系人
我尝试根据我已保存的存储的 contact.identifiers 查找联系人。

如果我找到 1 个联系人(标识符匹配)=> 太棒了!然后,我尝试将找到的联系人与我的地址.标识符进行匹配。再说一次,如果我只找到 1 个匹配项,我们就很棒了!如果没有,我就去尝试找到一个地址(见下文)

如果我找不到联系人(没有匹配的标识符)=> 我尝试根据我之前保存的联系人姓名查找联系人。如果我确实找到了匹配项,我就会尝试查找匹配的地址(见下文)。

搜索地址:
由于此时,我有一个我认为匹配的 CNContact 记录,因此我查看他们的每个邮政地址,并将其与我存储在数据库中的街道/城市/州/邮政编码/国家/地区进行比较。

如果我们找到完美匹配,那么我会更新我的标识符以包含新的地址/联系人标识符

如果我们最终找不到匹配项,我会为用户提供一个选项,让他们从设备中手动选择联系人/地址。