代码之家  ›  专栏  ›  技术社区  ›  Greg Maletic

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

  •  1
  • Greg Maletic  · 技术社区  · 15 年前

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

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

    + (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;
    }
    

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

    是否有人成功地从通讯簿联系人中检索到电话号码?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Greg Maletic    15 年前

    结果,当然,我做错了什么。显然,在请求电话号码等附加属性的整个过程中,您需要保持对地址簿的引用是活动的(保留)。当我让它活着的时候,电话号码的问题就消失了。