首页 编程 软件学院 查看内容

iOS添加、删除通讯录

2016-3-22 11:01 2277 0

摘要: 前言今天做到这个么小需求,需要添加N条手机号到通讯录,同样也要能清空通讯录。在完成后, 将这两段代码片段记录下来,供大家参考!添加到通讯录下面是添加到通讯录的一段代码片段,这里只是手机号作为firstName, ...

前言

今天做到这个么小需求,需要添加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,
                      (__bridgeCFTypeRef)self.phoneArray[i],
                      &error);
      
      //创建一个多值属性
      ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);
      ABMultiValueAddValueAndLabel(multi,
                                  (__bridgeCFTypeRef)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(), ^{
          [SVProgressHUDshowSuccessWithStatus:@"清空通讯录成功"];
        });
        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) {
          [SVProgressHUDshowSuccessWithStatus:@"清空通讯录成功"];
        } else {
          [SVProgressHUDshowErrorWithStatus:@"清空通讯录失败"];
        }
      });
    }
});
 

最后

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

关注我

联系方式关注备注
标哥博客iOS交流群324400294(满)|494669518(满)|494669518(满)|250351140(新)群里很活跃,定期清理
微信公众号iOSDevShares关注公众号阅读好文章
新浪微博@标哥的技术博客关注微博动态
GITHUBCoderJackyHuang文章Demo都在GITHUB
联系标哥关于标哥保持活跃在最前线
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部