TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
网上搜索了很多相关资料都写得过于复杂,可我们最常用的只需要用到姓名与电话号码,所以我整理了一下,只需要一个方法搞定!慢慢看吧
1、导入AddressBook.framework先,然后引用 #import <AddressBook/AddressBook.h>
2、授权,如果已成功,读取通讯录数据到数组里,否则程序会崩溃
3、读取方法- - (NSArray *)getContacts
- {
-
- // 1、创建对象
- ABAddressBookRef tmpAddressBook = ABAddressBookCreateWithOptions(nil, nil);
-
- // 2、获取通讯录
- CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);
-
- // 3、遍历通讯录
- NSMutableArray *array = [NSMutableArray array];
- for (int i = 0; i < CFArrayGetCount(results); i++){
- // 3.1、获取单条记录
- ABRecordRef person = CFArrayGetValueAtIndex(results, i);
-
- // 3.2、取记录中的名字
- NSString *firstName = (__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
- NSString *name = (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
- if (firstName) name = [name stringByAppendingString:firstName]; // 名字拼接
-
- // 3.3、取记录中的号码
- ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty); // 所有号码
- for (int k = 0; k < ABMultiValueGetCount(phones); k++) // 遍历取值
- {
- NSString * phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, k); // 取出号码
- NSDictionary *dict = @{name : phone}; // 拼接字典
- [array addObject:dict]; // 加入数组
- }
- }
-
- return array;
- }
复制代码
|
|