• 获取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

     

  • 相关阅读:
    函数即变量
    装饰器模型
    团队配合指令
    三元指令
    虚实之门
    for的逻辑
    我写的第4个程序(日志最近行读取函数)
    还在用WebBrowser吗?你out了!
    关于打印机共享的注意事项——又被叫去修电脑了
    MVVM转换器Int2StringConverter基础类
  • 原文地址:https://www.cnblogs.com/h-tao/p/4861413.html
Copyright © 2020-2023  润新知