本帖最后由 Sian 于 2015-4-4 10:38 编辑
网上相关贴子很多,但基本上都来自同一个出处,基础不好的同学可能看来起会很吃力,我今天整理了一下,化繁为简只提取通讯录中姓名与电话号码,给出最简便的方便供大家参考
为方便大家调用,我写成了返回数组的方法,直接copy到你的代码中即可取得联系人对象的数组,废话不多说直接上代码吧,数据模型可自定义,只要包含姓名、号码两个成员变量即可,我这里就不粘了,根据需要自定义吧,如有需要可回复
- (NSArray *)getContacts:(ABAddressBookRef)adress {
// 1、获取通讯录 CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(adress);
// 2、遍历通讯录 NSMutableArray *array = [NSMutableArray array]; for (int i = 0; i < CFArrayGetCount(results); i++){
// 2.1、获取单条记录 ABRecordRef person = CFArrayGetValueAtIndex(results, i);
// 2.2、取记录中的名字 NSString *firstName = (__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty); NSString *name = (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty); if (firstName) name = [name stringByAppendingString:firstName]; // 名字拼接
// 2.3、取记录中的号码 ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty); // 所有号码 for (int k = 0; k < ABMultiValueGetCount(phones); k++){ // 遍历取值 NSString * phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, k); // 取出号码 RMContact *contact = [RMContact contactWithName:name phone:phone]; [array addObject:contact]; // 加入数组 } }
return array; }
红色部分请根据自已的数据模型创建!! 方便Copy写成代码块:[Objective-C] 纯文本查看 复制代码 - (NSArray *)getContacts:(ABAddressBookRef)adress
{
// 1、获取通讯录
CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(adress);
// 2、遍历通讯录
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < CFArrayGetCount(results); i++){
// 2.1、获取单条记录
ABRecordRef person = CFArrayGetValueAtIndex(results, i);
// 2.2、取记录中的名字
NSString *firstName = (__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *name = (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
if (firstName) name = [name stringByAppendingString:firstName]; // 名字拼接
// 2.3、取记录中的号码
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty); // 所有号码
for (int k = 0; k < ABMultiValueGetCount(phones); k++){ // 遍历取值
NSString * phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, k); // 取出号码
RMLocalContact *contact = [RMLocalContact contactWithName:name phone:phone];
[array addObject:contact]; // 加入数组
}
}
_contacts = [NSArray arrayWithArray:array];
return array;
}
|