"Get information from iPhone address book (only with emails)"

Mon 11 May 2009

 //Also you need to include AddressBook.framework

#import <AddressBook/AddressBook.h>

#import <AddressBook/ABAddressBook.h>

#import <AddressBook/ABPerson.h>

 

[contactList removeAllObjects];

// open the default address book. 

ABAddressBookRef m_addressbook = ABAddressBookCreate();

if (!m_addressbook) {

    NSLog(@"opening address book");

}

// can be cast to NSArray, toll-free

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);

CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);

// CFStrings can be cast to NSString!

for (int i=0;i < nPeople;i++) { 

MContact contact = [[MContact alloc] init];

ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);

CFStringRef firstName, lastName;

firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);

lastName  = ABRecordCopyValue(ref, kABPersonLastNameProperty);

contact.name = [NSString stringWithFormat:@"%@ %@", firstName, lastName];

 

ABMutableMultiValueRef eMail  = ABRecordCopyValue(ref, kABPersonEmailProperty);

if(ABMultiValueGetCount(eMail) > 0) {

contact.email =  (NSString )ABMultiValueCopyValueAtIndex(eMail, 0);

[contactList addObject:contact];

}

CFRelease(ref);

CFRelease(firstName);

CFRelease(lastName);

}