Sian 发表于 2014-8-20 11:33:26

ios开发获取手机通讯录(最简单明了)

网上搜索了很多相关资料都写得过于复杂,可我们最常用的只需要用到姓名与电话号码,所以我整理了一下,只需要一个方法搞定!慢慢看吧
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 = ;
    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 = ;                     // 名字拼接
      
      // 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};                                           // 拼接字典
            ;                                                         // 加入数组
      }
    }
   
    return array;
}

页: [1]
查看完整版本: ios开发获取手机通讯录(最简单明了)