获取ios通讯录信息

包含相应地库之后直接调用

#import <AddressBook/AddressBook.h>

#import <AddressBookUI/AddressBookUI.h>

-(void)readAllPeoples

{

    //定义通讯录名字为addressbook

    ABAddressBookRef tmpAddressBook = nil;

    

    //根据系统版本不同,调用不同方法获取通讯录

    if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) {

        tmpAddressBook = ABAddressBookCreateWithOptions(NULL, NULL);

        dispatch_semaphore_t sema=dispatch_semaphore_create(0);

        ABAddressBookRequestAccessWithCompletion(tmpAddressBook, ^(bool greanted, CFErrorRef error){

            dispatch_semaphore_signal(sema);

        });

        dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);

    }

    else

    {

        tmpAddressBook = ABAddressBookCreateWithOptions(NULL, NULL);

    }

    //取得通讯录失败

    if (tmpAddressBook==nil) {

        return ;

    };

    

    //将通讯录中的信息用数组方式读出

    NSArray* tmpPeoples = (__bridge NSArray*)ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);

    

    //遍历通讯录中的联系人

    for(id tmpPerson in tmpPeoples){

        

        //获取的联系人单一属性:First name

        NSString* tmpFirstName = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson), kABPersonFirstNameProperty);

        NSLog(@"First name:%@", tmpFirstName);

        

        //获取的联系人单一属性:Last name

        NSString* tmpLastName = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson),kABPersonLastNameProperty);

        NSLog(@"Last name:%@", tmpLastName);

        

        //获取的联系人单一属性:Nickname

        NSString* tmpNickname = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson), kABPersonNicknameProperty);

        NSLog(@"Nickname:%@", tmpNickname);

        

        //获取的联系人单一属性:Company name

        NSString* tmpCompanyname = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson), kABPersonOrganizationProperty);

        NSLog(@"Company name:%@", tmpCompanyname);

        

        //获取的联系人单一属性:Job Title

        NSString* tmpJobTitle= (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson),kABPersonJobTitleProperty);

        NSLog(@"Job Title:%@", tmpJobTitle);

        

        //获取的联系人单一属性:Department name

        NSString* tmpDepartmentName = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson), kABPersonDepartmentProperty);

        NSLog(@"Department name:%@", tmpDepartmentName);

        

        //获取的联系人单一属性:Email(s)

        ABMultiValueRef tmpEmails = ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson),kABPersonEmailProperty);

        for(NSInteger j = 0; ABMultiValueGetCount(tmpEmails); j++)

        {

            NSString* tmpEmailIndex = (__bridge NSString*)ABMultiValueCopyValueAtIndex(tmpEmails, j);

            NSLog(@"Emails%ld:%@", (long)j, tmpEmailIndex);

        }

        CFRelease(tmpEmails);

        

        //获取的联系人单一属性:Birthday

        NSDate* tmpBirthday = (__bridge NSDate*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson),kABPersonBirthdayProperty);

        NSLog(@"Birthday:%@", tmpBirthday);

        

        //获取的联系人单一属性:Note

        NSString* tmpNote = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson),kABPersonNoteProperty);

        NSLog(@"Note:%@", tmpNote);

        

        //获取的联系人单一属性:Generic phone number

        ABMultiValueRef tmpPhones = ABRecordCopyValue((__bridge ABRecordRef)(tmpPerson),kABPersonPhoneProperty);

        for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++)

        {

            NSString* tmpPhoneIndex = (__bridge NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j);

            NSLog(@"tmpPhoneIndex%ld:%@", (long)j, tmpPhoneIndex);

        }

    }

 

}

 

原文路径:http://www.devdiv.com/ios_-blog-215400-52842.html

 

posted @ 2015-10-08 16:26  Mr_tao  阅读(233)  评论(0编辑  收藏  举报