Когда я пытаюсь получить телефонные номера из контактов адресной книги, результат всегда равен нулю, если у контакта есть адрес электронной почты. Это, очевидно, большая проблема ... такая большая, на самом деле, что мне трудно поверить, что я не делаю что-то не так. Но каждый тест, который я провел, включая использование других, не связанных между собой примеров кода, дает один и тот же результат.
Я использовал приведенный ниже код для успешного получения адресов электронной почты:
+ (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;
}
... извлекает номера телефонов только для пользователей, у которых нет адресов электронной почты. Если у них есть адреса электронной почты, номера телефонов не возвращаются.
Кто-нибудь успешно извлек телефонные номера из контактов адресной книги?
Спасибо.