Как получить электронные письма контактов адресной книги iPhone в виде NSStrings?

Я знаю, что для электронной почты может быть несколько значений, но я не знаю, как их просматривать.

Я могу правильно понять человека.

ABRecordRef person = // getting a person;
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty);

... что дальше? Если я попытаюсь напечатать переменную emails, я получу:

Emails: <NSCFType: 0x4018d40>

person marcgg    schedule 29.10.2009    source источник


Ответы (3)


Это потому, что электронные письма должны быть не строкой, а массивом. У людей может быть много писем!

ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>);
NSLog( (NSString *) email);

Вот некоторые документы о том, что вы можете делать с MultiValueLists

person coneybeare    schedule 29.10.2009
comment
Спасибо! Знаете ли вы, как я могу получить размер массива электронных писем, чтобы я мог его просматривать? - person marcgg; 29.10.2009
comment
я добавил ссылку на документы, где вы найдете метод «count» - person coneybeare; 29.10.2009
comment
для подсчета я использовал это: CFIndex count = ABMultiValueGetCount(emails); - person marcgg; 30.10.2009

Тип этой записи — ABMultiValue (в частности, тип этого поля — kABMultiStringProperty). См. раздел "Использование многозначных списков". как их читать. См. Справочник по константам Objective-C адресной книги для того, что возвращает каждое свойство.

Кроме того, помните, что функции AB подчиняются Создать правило. Вы несете ответственность за освобождение объектов, которые вы получаете от функции со словом «Копировать».

person Rob Napier    schedule 29.10.2009

В iOS 9 ABFramework устарел для новой Contacts Framework:

Я покажу вам пример регистрации каждого адреса электронной почты CNContact:

CNContact * yourContact = //...

for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
    NSLog(@"%@",[emailLabeledValue value]);
}
person andreacipriani    schedule 21.09.2015