使用API从iPhone通讯簿检索电话号码时出现奇怪错误

使用API从iPhone通讯簿检索电话号码时出现奇怪错误,iphone,addressbook,Iphone,Addressbook,当我尝试从通讯簿联系人中检索电话号码时,如果联系人有电子邮件地址,则结果总是为零。这显然是个大问题……事实上,这是个大问题,我很难相信自己没有做错什么。但我所做的每一个测试——包括使用其他不相关的代码样本——都给出了相同的结果 我已使用以下代码成功检索电子邮件地址: + (NSArray*)emailFromRecordRef:(ABRecordRef)personRef { ABMultiValueRef emailAddressesRef = ABRecordCopyValue(pe

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

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

+ (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;
}
…它仅检索没有电子邮件地址的用户的电话号码。如果他们有电子邮件地址,则不会返回电话号码

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


谢谢。

结果当然是我做错了什么。显然,在您请求其他属性(如电话号码)的整个过程中,您需要保持对AddressBook的引用处于活动状态(保留)。当我让它活着的时候,电话号码问题就消失了