Странная ошибка при получении телефонных номеров из адресной книги iPhone с помощью API - PullRequest
1 голос
/ 06 апреля 2010

Когда я пытаюсь получить телефонные номера из контактов адресной книги, результат всегда равен нулю, если у контакта есть адрес электронной почты. Это, очевидно, большая проблема ... такая большая, на самом деле, что мне трудно поверить, что я не делаю что-то не так. Но каждый тест, который я провел, включая использование других, не связанных между собой примеров кода, дает один и тот же результат.

Я использовал приведенный ниже код для успешного получения адресов электронной почты:

+ (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 Ответ

2 голосов
/ 07 апреля 2010

Оказывается, конечно, я делал что-то не так.Очевидно, вам нужно поддерживать ссылку на AddressBook в течение всего времени, когда вы запрашиваете дополнительные атрибуты, например номера телефонов.Когда я оставил его в живых, проблема с номером телефона ушла.

...