1

有没有办法将 OS X 上的 ABPerson 记录中的唯一标识符与 IOS 上的唯一标识符匹配?乍一看,我无法从通讯簿上的同一个人那里获得相同的 ID。对于初学者,在 mac 上属性 kABUIDProperty 是字符串类型,而在 iOS 上,ABRecordID 是整数类型。

所以我的问题是,考虑到两个设备都是通过 iCloud 同步的,我如何在 IOS 和 OS X 上检索相同的 ABPerson 记录。

4

1 回答 1

1

有同样的问题,所以我决定收集有关主题的所有信息。

来自地址簿编程指南 (iOS)

地址簿数据库中的每条记录都有一个唯一的记录标识符。此标识符始终引用相同的记录,除非该记录被删除或数据被重置。记录标识符可以在线程之间安全地传递。不能保证它们在不同设备上保持不变

来自地址簿编程指南 (OSX)

每个组和个人都有一个唯一的标识符。它在创建记录时设置,并保证即使用户更改组或个人的姓名或其他信息也不会更改。如果您的应用程序需要存储对组或个人的引用,请使用此标识符。有关详细信息,请参阅 ABRecord 方法 uniqueId。

但似乎实际上它确实发生了变化,例如当用户关闭/打开 iCloud 时:

http://mjtsai.com/blog/2011/11/07/kabuidproperty/

所以最好的方法是:

保持对特定记录的长期引用的推荐方法是存储名字和姓氏,或名字和姓氏的哈希值,以及标识符。当您按 ID 查找记录时,将记录的名称与您存储的名称进行比较。如果它们不匹配,则使用存储的名称查找记录,并存储记录的新 ID。

还值得一读: 保持对 IOS 地址簿条目的长期引用

关于新的联系人框架:

CNContact.identifier

建议您在重新获取联系人时使用标识符。标识符可以在应用程序启动之间保持不变。请注意,此标识符仅唯一标识当前设备上的联系人

于 2016-02-27T14:18:38.433 回答