iOS添加、删除通讯录 (清空通讯录)

http://www.henishuo.com/insert-delete-addressbook/?utm_source=tuicool&utm_medium=referral

前言

今天做到这个么小需求,需要添加N条手机号到通讯录,同样也要能清空通讯录。在完成后, 将这两段代码片段记录下来,供大家参考!

添加到通讯录

下面是添加到通讯录的一段代码片段,这里只是手机号作为firstName,功能很单一,具体要添加多个值需要自己去添加!

CFErrorRef error = NULL;
  
//创建一个通讯录操作对象
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
  
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (granted && !error) {
  for (NSUInteger i = 0; i < self.textField.text.integerValue && i < count; ++i) {
    @autoreleasepool {
      // 创建一条新的联系人纪录
      ABRecordRef newRecord = ABPersonCreate();
      
      // 为新联系人记录添加属性值
      ABRecordSetValue(newRecord,
                       kABPersonFirstNameProperty,
                       (__bridge CFTypeRef)self.phoneArray[i],
                       &error);
      
      //创建一个多值属性
      ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);
      ABMultiValueAddValueAndLabel(multi,
                                   (__bridge CFTypeRef)self.phoneArray[i],
                                   kABPersonPhoneMobileLabel, NULL);
      
      //将多值属性添加到记录
      ABRecordSetValue(newRecord, kABPersonPhoneProperty, multi, &error);
      //添加记录到通讯录操作对象
      ABAddressBookAddRecord(addressBook, newRecord, &error);
      
      CFRelease(newRecord);
      CFRelease(multi);
    }
  }
  
  //保存通讯录操作对象
  ABAddressBookSave(addressBook, &error);
  CFRelease(addressBook);
}


清空通讯录

下面是一段清空通讯录的代码片段,一定要小心哦,清空前一定要慎重!

CFErrorRef error = NULL;
  
//创建一个通讯录操作对象
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
  
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
    if (granted && !error) {
      CFArrayRef personArray = ABAddressBookCopyArrayOfAllPeople(addressBook);
      CFIndex personCount = ABAddressBookGetPersonCount(addressBook);
      
      if (personCount <= 0) {
        dispatch_async(dispatch_get_main_queue(), ^{
          [SVProgressHUD showSuccessWithStatus:@"清空通讯录成功"];
        });
        return;
      }
      
      for (int i = 0; i < personCount; i++) {
        ABRecordRef ref = CFArrayGetValueAtIndex(personArray, i);
        // 删除联系人
        ABAddressBookRemoveRecord(addressBook, ref, nil);
      }
      
      // 保存通讯录操作对象
      ABAddressBookSave(addressBook, &error);
      CFRelease(addressBook);
      
      dispatch_async(dispatch_get_main_queue(), ^{
        if (!error) {
          [SVProgressHUD showSuccessWithStatus:@"清空通讯录成功"];
        } else {
          [SVProgressHUD showErrorWithStatus:@"清空通讯录失败"];
        }
      });
    }
});


最后

iOS9.0以后ABAddressBook这个framework被废弃了,推荐的是CNContact这个类来处理。不过我们都需要兼容9.0以下版本,所以现在不用管它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值