iOS获取手机通讯录方式方法(最新)

2020-01-20 23:51:50于海丽

3、实现代理方法,获取单人信息(1.点击姓名显示详情 2.不显示详情)


// 选择某个联系人时调用
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
CNContact *contact = contactProperty.contact;
NSString *name = [CNContactFormatter stringFromContact:contact style:CNContactFormatterStyleFullName];
CNPhoneNumber *phoneValue= contactProperty.value;
NSString *phoneNumber = phoneValue.stringValue;
NSLog(@"%@--%@",name, phoneNumber);
}

代理方法说明


// 1.选择联系人时使用(不展开详情)
- (void)contactPicker:(CNContactPickerViewController   *)picker didSelectContact:(CNContact *)contact;

注:如果有上面的方法,下面的方法不执行

// 2.选择联系人某个属性时调用(展开详情)
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty;

// 3.取消选中联系人时调用
- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker;

4、取消选择的回调


- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker{
[picker dismissViewControllerAnimated:YES completion:nil];
}

到此上面的过程便可得到通讯录中一个人的信息,下面说一下获取手机的整体通讯录方法(获取全部联系人信息)

5、获取全部通讯录信息


  // 创建通讯录对象
  CNContactStore *contactStore = [CNContactStore new];
  NSArray *keys = @[CNContactPhoneNumbersKey,CNContactGivenNameKey];
  // 获取通讯录中所有的联系人
  CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:keys];

  [contactStore enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {

  // 获取姓名
  //  NSString *firstName = contact.familyName;
  NSString *lastName = contact.givenName;

  NSLog(@"name: %@",lastName);

  // 获取电话号码

  for (CNLabeledValue *labeledValue in contact.phoneNumbers){

    CNPhoneNumber *phoneValue = labeledValue.value;
    NSString *phoneNumber = phoneValue.stringValue;
    NSLog(@"number: %@",phoneNumber);
  }
    }];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。

 
注:相关教程知识阅读请移步到IOS开发频道。