如果有链接的联系人,则无法从ABPersonViewController获取正确的数据

时间:2015-03-24 16:13:45

标签: ios abpersonviewcontroller

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

当我选择链接电子邮件(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中,我没有选择电子邮件,而是第一个。 我只有联合联系人才有这个问题。

是否有正确的方式从联系人的联系人中选择电子邮件?

1 个答案:

答案 0 :(得分:1)

我能够想象您描述的行为的唯一方法是,您可能在第一个为ABRecordRef填充displayedPerson属性时填充的某个属性或ivar中引用了ABPersonViewController 。显然,在此代码段中,您正确使用传递给此委托方法的person属性,但是在与我们共享时,您可能简化了代码段吗?当我使用启用了shouldShowLinkedPeople的代码段时,对于链接的联系人属性,它可以正常使用。

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

相关问题