【问题标题】:Odd error when retrieving phone numbers from iPhone Address Book using API使用 API 从 iPhone 通讯录中检索电话号码时出现奇怪的错误
【发布时间】:2010-04-05 21:41:52
【问题描述】:

当我尝试从通讯簿联系人中检索电话号码时,如果联系人有电子邮件地址,则结果始终为零。这显然是一个大问题......事实上,如此大的问题,我很难相信我没有做错什么。但是我所做的每一个测试——包括使用其他不相关的代码示例——都会给出相同的结果。

我已使用以下代码成功检索电子邮件地址:

+ (NSArray*)emailFromRecordRef:(ABRecordRef)personRef
{
    ABMultiValueRef emailAddressesRef = ABRecordCopyValue(personRef, kABPersonEmailProperty);
    NSArray* emailAddresses = nil;
    if (emailAddressesRef != nil)
    {
        emailAddresses = [(NSArray*)ABMultiValueCopyArrayOfAllValues(emailAddressesRef) autorelease];
        CFRelease(emailAddressesRef);       
    }

    return emailAddresses;
}

...但是当我使用相同的代码来检索电话号码时:

+ (NSArray*)phoneNumbersFromRecordRef:(ABRecordRef)personRef
{
    ABMultiValueRef phoneNumbersRef = ABRecordCopyValue(personRef, kABPersonPhoneProperty);
    NSArray* phoneNumbers = nil;
    if (phoneNumbersRef != nil)
    {
        phoneNumbers = [(NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumbersRef) autorelease];
        CFRelease(phoneNumbersRef);     
    }

    return phoneNumbers;
}

...它只检索没有电子邮件地址的用户的电话号码。如果他们有电子邮件地址,则不会返回电话号码。

有没有人从通讯录联系人中成功检索到电话号码?

谢谢。

【问题讨论】:

    标签: iphone addressbook


    【解决方案1】:

    事实证明,当然,我做错了什么。显然,在您请求电话号码等附加属性的整个过程中,您需要保持对 AddressBook 的引用有效(保留)。当我让它活着时,电话号码问题就消失了。

    【讨论】:

      猜你喜欢
      • 2012-12-10
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2011-05-15
      • 2010-12-30
      • 2012-10-27
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多