来自IOS& amp;的匹配地址簿记录OS X?

时间:2015-03-09 04:01:01

标签: ios macos addressbook abperson

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  

通讯簿数据库中的每条记录都有一条唯一的记录   标识符。除非,此标识符始终引用相同的记录   该记录被删除或数据被重置。记录标识符可以是   在线程之间安全传递。 他们无法保证保持这种状态   设备相同

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

  

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

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

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

所以最好的方法是:

  

保持对特定内容的长期引用的推荐方法   record是存储名字和姓氏,或者是第一个和第一个的哈希值   姓氏,除了标识符。当你查找记录时   ID,将记录的名称与存储的名称进行比较。如果他们不这样做   匹配,使用存储的名称查找记录,并存储新ID   记录。

也值得一读: Keeping a long-term reference to an IOS AddressBook entry

关于新的联系框架:

<强> CNContact.identifier

  

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