转载

iOS添加、删除通讯录

前言

今天做到这个么小需求,需要添加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 关注公众号阅读好文章
新浪微博 @标哥的技术博客 关注微博动态
GITHUB CoderJackyHuang 文章Demo都在GITHUB
联系标哥 关于标哥 保持活跃在最前线
原文  http://www.henishuo.com/insert-delete-addressbook/
正文到此结束
Loading...