ios - 如果链接的联系人无法从ABPersonViewController获取正确的数据

原文 标签 ios abpersonviewcontroller

我与链接的联系人有联系。因此,当我显示此与ABPersonViewController的联系人时,具有原始电子邮件和来自链接联系人的电子邮件。

当我选择链接的电子邮件(John-appleseed@mac.com)时,然后委托方法调用:

- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
    //get selected phone number
    ABMultiValueRef multi = ABRecordCopyValue(person, property);
    CFIndex index = ABMultiValueGetIndexForIdentifier(multi, identifier);
    NSString *selectedContactData = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(multi, index);

    return NO;
}

但是在selectedContactData中,我没有选择电子邮件,而是第一个。
我只有合并的联系人才有这个问题。

是否有适当的方法从已连接的联系人中选择电子邮件?

最佳答案

我可以想象您描述的行为的唯一方法是,您可能在首次为ABRecordRef填充displayedPerson属性时所引用的某些属性或ivar中引用了ABPersonViewController。显然,在此代码段中,您正确使用了传递给此委托方法的person属性,但也许在与我们共享时简化了该代码段?当我在打开shouldShowLinkedPeople的情况下使用您的代码段时,对链接联系人的属性来说,它对我来说效果很好。

如果确定使用错误的ABRecordRef变量没有问题,那么我可以想象的唯一另一种可能性是,使用模拟器上提供的默认联系人会遇到奇怪的行为。我可能建议在具有真实链接联系人的实际设备上尝试此操作。

关于ios - 如果链接的联系人无法从ABPersonViewController获取正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237680/

相关文章:

ios - 我的所有数据都没有存储在 Coredata 中

iphone - 如何为Person ViewController的导航栏添加返回按钮?

iphone - 处理 ABPersonViewController 中的点击事件

ios - ABPersonViewController无法在可编辑模式下打开

ios - ABPersonViewController不会关闭键盘

ios - 委托(delegate)未在UIBarItem点击处调用

javascript - react-native应用程序已启动,现在添加导航

objective-c - 枚举值 'SHKShareTypeUndefined' 未在交换机中处理

ios - 如何调整导航栏标题和编辑后退按钮

ios - 是否可以使用 ABPersonViewController 从我的 iOS 应用程序更新链接的联系人?