1  首先导入库 <AddressBook/AddressBook.h>

2 然后在导入#import <AddressBook/AddressBook.h>文件

3 声明  @property (nonatomic,assign) ABAddressBookRef addressBook;//电话簿

并进行初始化   self.addressBook = ABAddressBookCreateWithOptions(NULL, NULL);

4 然后进行获取通讯录的操作

ABAddressBookRequestAccessWithCompletion(self.addressBook, ^(bool granted, CFErrorRef error) {
if(!granted)
{
NSLog(@"未获得访问权限");
}
//权限状态
ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
if(status!=kABAuthorizationStatusAuthorized)
{
NSLog(@"未获得通讯录权限");
} //取得记录
CFArrayRef allPeopleCF = ABAddressBookCopyArrayOfAllPeople(self.addressBook);
NSMutableArray *allPeople = (__bridge NSMutableArray *)(allPeopleCF); //过滤没用的号码
for (int i = ; i<allPeople.count; i++) {
//获得记录
ABRecordRef recordRef = (__bridge ABRecordRef)(allPeople[i]);
//获得姓
NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(recordRef, kABPersonFirstNameProperty));
//获得名
NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(recordRef, kABPersonLastNameProperty));
//获得电话号码
ABMultiValueRef phoneNumbersRef = ABRecordCopyValue(recordRef, kABPersonPhoneProperty); //获得电话号码的长度
long count = ABMultiValueGetCount(phoneNumbersRef);
//定义一个字符串用来接收电话号码
NSString *numStr = @"";
if (count>) {
//将ABMultiValueRef转换成nsstring类型的
numStr = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phoneNumbersRef, ));
//去掉86 - 还有空格
numStr = [numStr stringByReplacingOccurrencesOfString:@"+86" withString:@""];
numStr = [numStr stringByReplacingOccurrencesOfString:@"-" withString:@""];
numStr = [numStr stringByReplacingOccurrencesOfString:@" " withString:@""];
} //如果最后的是11位 就表示符合条件
if (numStr.length == ){ // //将电话号放在可变字符串里边方便作为参数
// if(i ==allPeople.count-1){
// [self.allPhoneNum appendString:[NSString stringWithFormat:@"%@",numStr]];
// }else{
// [self.allPhoneNum appendString:[NSString stringWithFormat:@"%@,",numStr]];}
//
// NSLog(@"self.allPhoneNum:%@",self.allPhoneNum); //将电话号码存起来
[self.bookdatas addObject:numStr];
} } });

然后用bookDatas 在tableview中进行展示就可以了

04-15 00:54