有没有办法将OS X上的ABPerson记录中的唯一标识符与IOS上的唯一标识符进行匹配?乍一看,我无法从通讯录上的同一个人那里获得相同的身份证。 对于初学者,在mac上,属性kABUIDProperty的类型为string,而在iOS上有ABRecordID,它是一个整数类型。
所以我的问题是,如何在IOS& amp;上检索相同的ABPerson记录? OS X,考虑到这两个设备都是同步的iCloud。
答案 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 强>
建议您在重新获取时使用标识符 联系。应用程序启动之间可以保留标识符。注意 此标识符仅唯一标识该联系人 当前设备。