Найти адрес электронной почты “работы” для человека в iPhone Address Book?

Существует ли способ найти конкретный вид адреса электронной почты для человека от iPhone Address Book? Я знаю, как получить все адреса электронной почты для человека, просто не, как определить, какой адрес электронной почты это ("домой", "работа", и т.д.)..., ни (и это могло бы быть предпочтительно), способ непосредственно получить доступ к тому адресу, не имея необходимость выполнять итерации через них всех.

Спасибо.

5
задан Greg Maletic 22 January 2010 в 19:57
поделиться

1 ответ

Проверка на этикетку Kabworklabel с использованием ABMultiValuecopyLabelatindex.

Например, если у вас есть Abrecordref по имени «Человек», этот код установит один NSString с именем «EmailAddress»:

// Email address (if only one, use it; otherwise, use the first work email address)
CFStringRef value, label;
ABMutableMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty);
CFIndex count = ABMultiValueGetCount(multi);
if (count == 1) {
    value = ABMultiValueCopyValueAtIndex(multi, 0);
    emailAddress = (NSString*)value;
    [emailAddress retain];
    CFRelease(value);
} else {
    for (CFIndex i = 0; i < count; i++) {
        label = ABMultiValueCopyLabelAtIndex(multi, i);
        value = ABMultiValueCopyValueAtIndex(multi, i);

        // check for Work e-mail label
        if (label && CFStringCompare(label, kABWorkLabel, 0) == 0) {
            emailAddress = (NSString*)value;
            [emailAddress retain];
            break;
        }

        CFRelease(label);
        CFRelease(value);
    }
}
CFRelease(multi);
15
ответ дан 18 December 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: