博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读取通讯录
阅读量:5939 次
发布时间:2019-06-19

本文共 3006 字,大约阅读时间需要 10 分钟。

-(IBAction)getContact

{

    if (self.infoArray.count > 0) {

        return;

    }

    ABAddressBookRef addressBook=nil;

    CGFloat systemVersion = [[UIDevice currentDevice].systemVersion floatValue];

    if (systemVersion >= 6.0)//系统版本大约等于6

    {

        addressBook=ABAddressBookCreateWithOptions(NULL, NULL);

        dispatch_semaphore_t sema=dispatch_semaphore_create(0);

        ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {

            dispatch_semaphore_signal(sema);

        });

        dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);

//        dispatch_release(sema);

    }

    else//系统版本小于6

    {

        addressBook=ABAddressBookCreate();

    }

    

    ABAddressBookRef tmpAddressBook = ABAddressBookCreate();

    CFArrayRef tmpPeoples = ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);

    CFIndex nPeople = ABAddressBookGetPersonCount(tmpAddressBook);

    double interval = [[NSDatedate] timeIntervalSince1970];

    NSLog(@"interval start:%f", interval);

    for (int kk = 0; kk < 1; kk++) {

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

            

            NSMutableArray * phoneArray=nil;

            NSString *contactName = nil;

            ABRecordRef person = CFArrayGetValueAtIndex(tmpPeoples, i);

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

            NSString * tmpFirstName = (__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);

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

            NSString* tmpLastName = (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);

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

            

            ABMultiValueRef tmpPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);

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

            {

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

                tmpPhoneIndex = [tmpPhoneIndex stringByReplacingOccurrencesOfString:@"+86" withString:@""];

                tmpPhoneIndex = [tmpPhoneIndex stringByReplacingOccurrencesOfString:@" " withString:@""];

                tmpPhoneIndex = [tmpPhoneIndex stringByReplacingOccurrencesOfString:@"-" withString:@""];

                if (tmpPhoneIndex.length != 11) {

                    continue;

                }

                if (!phoneArray)

                {

                    phoneArray=[[NSMutableArray alloc] initWithObjects:tmpPhoneIndex, nil];

                }

                else

                {

                    [phoneArray addObject:tmpPhoneIndex];

                }

            }

            //这个联系人的正确手机号码至少得有一个

            if (phoneArray.count > 0) {

                if (tmpFirstName.length!=0 && ![tmpFirstName isKindOfClass:[NSNull class]])//姓长度不为0也不为NUll

                {

                    if (tmpLastName.length==0||[tmpLastName isKindOfClass:[NSNull class]])//名长度为0或是null

                    {

                        contactName=[NSString stringWithFormat:@"%@",tmpFirstName];

                    }

                    else//名长度既不为零,名也不为null

                    {

                        contactName=[NSString stringWithFormat:@"%@%@",tmpLastName,tmpFirstName];

                    }

                }

                else//姓长度为0或为null

                {

                    if (tmpLastName.length!=0&&![tmpLastName isKindOfClass:[NSNull class]])//名长度不为0也不为null

                    {

                        contactName=[NSString stringWithFormat:@"%@",tmpLastName];

                    }

                }

                if (self.infoArray.count == 0) {

                    self.infoArray = [[NSMutableArray alloc] init];

                }

                for (int j = 0; j < phoneArray.count; j++) {

                    NSString* phone = [phoneArray objectAtIndex:j];

                    ContactsUserInfo* info = [[ContactsUserInfo alloc] init];

                    info.tel = phone;

                    info.name = contactName;

                    [self.infoArray addObject:info];

                }

            }

        }

    }

    [self.mTableViewreloadData];

 

}

转载于:https://www.cnblogs.com/guligei/p/3417661.html

你可能感兴趣的文章
Oracle DBMS_STATS 包 和 Analyze 命令的区别
查看>>
给Visual Studio 2010中文版添加Windows Phone 7模板
查看>>
linux下基本命令
查看>>
windows server 2008R2 上安装配置freesshd
查看>>
手动删除SVCH0ST.EXE的方法
查看>>
已释放的栈内存
查看>>
Android网络之数据解析----SAX方式解析XML数据
查看>>
Java递归列出所有文件和文件夹
查看>>
[关于SQL]查询成绩都大于80分的学生
查看>>
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>
java之ibatis数据缓存
查看>>
“TNS-03505:无法解析名称”问题解决一例
查看>>
LeetCode - Longest Common Prefix
查看>>
Android图片处理
查看>>
2015年第21本:万万没想到,用理工科思维理解世界
查看>>
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>
转:Eclipse自动补全功能轻松设置
查看>>