Да, вы можете сделать это.Кажется подозрительным, что вы захотите сделать это (зачем вам эта информация?), Но это не сложно сделать.
Вы можете использовать ABAddressBookCopyArrayOfAllPeople
, чтобы получить CFArrayRef со всеми людьми, а затем вы можете запросить kABPersonEmailProperty
каждого с помощью ABRecordCopyValue
.Код выглядел бы примерно так (не проверено):
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
NSMutableArray *allEmails = [[NSMutableArray alloc] initWithCapacity:CFArrayGetCount(people)];
for (CFIndex i = 0; i < CFArrayGetCount(people); i++) {
ABRecordRef person = CFArrayGetValueAtIndex(people, i);
ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
for (CFIndex j=0; j < ABMultiValueGetCount(emails); j++) {
NSString* email = (NSString*)ABMultiValueCopyValueAtIndex(emails, j);
[allEmails addObject:email];
[email release];
}
CFRelease(emails);
}
CFRelease(addressBook);
CFRelease(people);
(Выделение памяти может быть немного нереальным; прошло много времени с тех пор, как я разработал код Cocoa / Core Foundation.)
А если серьезно, вопрос, почему вы это делаете.Есть хороший шанс, что есть лучшее решение, просто используя API от Apple для представления средства выбора контактов в подходящее время.