【问题标题】:iOS: How to get the 'primary' ABPersonRef out of the array of linked contacts that ABPersonCopyArrayOfAllLinkedPeople returns?iOS:如何从 ABPersonCopyArrayOfAllLinkedPeople 返回的链接联系人数组中获取“主要”ABPersonRef?
【发布时间】:2015-05-29 01:44:43
【问题描述】:

根据文档ABPersonCopyArrayOfAllLinkedPeople

"返回通讯簿数据库中所有人员记录的数组 链接到给定的人员记录”。

但我没有看到关于如何在此数组中获取用户/iOS 已选择/设置为“主要”联系人(即显示在联系人应用程序中)的 ABPersonRef 的线索?

更新: 以下屏幕截图应该更清楚我在说什么: 假设您有模拟器标准联系人(图 1),并且无论出于何种原因,您认为 Kate 和 Anna 实际上是同一个人 - 那么您可以将这两个联系起来。选择Kate,点击编辑Kate(图2),点击链接(图3),选择安娜(图4),确认链接(pic 5) - 那么联系人应用将只显示 Anna (pic 6)。当我在 Anna 或 Kate 上查询 ABPersonCopyArrayOfAllLinkedPeople 时,它​​会同时返回 Anna 和 Kate。但以编程方式,我无法判断哪个 ABPersonRef 是标准联系人应用程序选择显示的那个。

图 1: 图二: 图 3: 图四: 图 5: 图六:

【问题讨论】:

  • 好的,现在我遇到了你的问题,所以我删除了我的答案,因为它不是根据你的问题。现在我会尝试解决这个问题,如果可能的话再回答一次。

标签: ios contacts addressbook


【解决方案1】:

使用以下代码获取主要联系人

NSString *primaryContact   = (__bridge_transfer NSString*)ABPersonCopyArrayOfAllLinkedPeople(kABPersonPhoneMainLabel);

【讨论】:

  • 感谢您的回答 - 但我对您的代码感到有些惊讶。 ABPersonCopyArrayOfAllLinkedPeople 返回一个 CFArrayRef 并将 ABPersonRef 作为参数。您想如何将其转换为 NSString 并使用 CFStringRef 作为参数?此外,PhoneMainLabel 必须做什么链接联系人?可能是我在这里遗漏了一些重要的东西,或者我的问题没有我想的那么清楚。你能解释一下这应该如何工作吗?对不起,但我真的不理解它,也无法让它在 xcode 中工作)......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多