Swift - 添加、修改、删除通讯录联系人
来源:互联网 发布:淘宝店铺怎么改折扣价 编辑:程序博客网 时间:2024/05/17 03:38
使用AddressBook.framework框架,我们除了可以很方便的获取通信录里的联系人。同时,还能对通讯录进行新增、修改、删除联系人操作。
(注意:这些操作同查询一样,首先需要发起授权请求)
1,添加新联系人
import UIKitimport AddressBookimport AddressBookUIclass ViewController: UIViewController { //address Book对象,用来获取电话簿句柄 var addressBook:ABAddressBookRef? override func viewDidLoad() { super.viewDidLoad() //定义一个错误标记对象,判断是否成功 var error:Unmanaged<CFErrorRef>? addressBook = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue() //发出授权信息 let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus() if (sysAddressBookStatus == ABAuthorizationStatus.NotDetermined) { print("requesting access...")// var errorRef:Unmanaged<CFError>? = nil //addressBook = extractABAddressBookRef(ABAddressBookCreateWithOptions(nil, &errorRef)) ABAddressBookRequestAccessWithCompletion(addressBook, { success, error in if success { //添加新联系人 self.addRecord(); } else { print("error") } }) } else if (sysAddressBookStatus == ABAuthorizationStatus.Denied || sysAddressBookStatus == ABAuthorizationStatus.Restricted) { print("access denied") } else if (sysAddressBookStatus == ABAuthorizationStatus.Authorized) { print("access granted") //添加新联系人 self.addRecord(); } } //添加新联系人 func addRecord(){ //定义一个错误标记对象,判断是否成功 var error:Unmanaged<CFErrorRef>? //创建一个联系人对象 let newContact:ABRecordRef! = ABPersonCreate().takeRetainedValue() var success:Bool = false //设置联系人对象昵称 success = ABRecordSetValue(newContact, kABPersonNicknameProperty, "小李", &error) print("设置昵称结果:\(success)") //设置联系人姓氏 success = ABRecordSetValue(newContact, kABPersonLastNameProperty, "李", &error) print("设置姓氏结果:\(success)") //设置联系人名字 success = ABRecordSetValue(newContact, kABPersonFirstNameProperty, "大木", &error) print("设置名字结果:\(success)") //设置联系人电话 let phones:ABMutableMultiValueRef = ABMultiValueCreateMutable(ABPropertyType(kABStringPropertyType)).takeRetainedValue() success = ABMultiValueAddValueAndLabel(phones, "123456", "公司", nil) print("设置电话条目:\(success)") success = ABRecordSetValue(newContact, kABPersonPhoneProperty, phones, nil) print("设置电话结果:\(success)") //设置联系人邮箱 let addr:ABMutableMultiValueRef = ABMultiValueCreateMutable(ABPropertyType(kABStringPropertyType)).takeRetainedValue() success = ABMultiValueAddValueAndLabel(addr, "ABG@hangge.com", "公司", nil) print("设置邮箱条目结果:\(success)") success = ABRecordSetValue(newContact, kABPersonEmailProperty, addr, nil) print("设置邮箱结果:\(success)") //保存联系人 success = ABAddressBookAddRecord(addressBook, newContact, &error) print("保存记录是否成功:\(success)") //修改数据库 success = ABAddressBookSave(addressBook, &error) print("修改数据库是否成功:\(success)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }}
2,编辑修改联系人
先获取所有联系人遍历,根据联系人姓名或者电话来判断是否修改
import UIKitimport AddressBookimport AddressBookUIclass ViewController: UIViewController { //address Book对象,用来获取电话簿句柄 var addressBook:ABAddressBookRef? override func viewDidLoad() { super.viewDidLoad() //定义一个错误标记对象,判断是否成功 var error:Unmanaged<CFErrorRef>? addressBook = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue() //发出授权信息 let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus() if (sysAddressBookStatus == ABAuthorizationStatus.NotDetermined) { print("requesting access...")// var errorRef:Unmanaged<CFError>? = nil //addressBook = extractABAddressBookRef(ABAddressBookCreateWithOptions(nil, &errorRef)) ABAddressBookRequestAccessWithCompletion(addressBook, { success, error in if success { //编辑联系人 self.editRecord(); } else { print("error") } }) } else if (sysAddressBookStatus == ABAuthorizationStatus.Denied || sysAddressBookStatus == ABAuthorizationStatus.Restricted) { print("access denied") } else if (sysAddressBookStatus == ABAuthorizationStatus.Authorized) { print("access granted") //编辑联系人 self.editRecord(); } } //编辑联系人 func editRecord(){ //定义一个错误标记对象,判断是否成功 var error:Unmanaged<CFErrorRef>? let sysContacts:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray //遍历通讯录 for contact in sysContacts { //获取姓名 let lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as! String? ?? "" print("姓:\(lastName)") let firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as! String? ?? "" print("名:\(firstName)") var success:Bool = false if lastName == "李" && firstName == "大木"{ //设置联系人新对象昵称 success = ABRecordSetValue(contact, kABPersonNicknameProperty, "小李子", &error) print("设置昵称结果:\(success)") } } //保存数据库 let success = ABAddressBookSave(addressBook, &error) print("修改数据库是否成功:\(success)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }}
3,删除联系人
先获取所有联系人遍历,根据联系人姓名或者电话来判断是否删除
import UIKitimport AddressBookimport AddressBookUIclass ViewController: UIViewController { //address Book对象,用来获取电话簿句柄 var addressBook:ABAddressBookRef? override func viewDidLoad() { super.viewDidLoad() //定义一个错误标记对象,判断是否成功 var error:Unmanaged<CFErrorRef>? addressBook = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue() //发出授权信息 let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus() if (sysAddressBookStatus == ABAuthorizationStatus.NotDetermined) { print("requesting access...")// var errorRef:Unmanaged<CFError>? = nil //addressBook = extractABAddressBookRef(ABAddressBookCreateWithOptions(nil, &errorRef)) ABAddressBookRequestAccessWithCompletion(addressBook, { success, error in if success { //删除联系人 self.deleteRecord(); } else { print("error") } }) } else if (sysAddressBookStatus == ABAuthorizationStatus.Denied || sysAddressBookStatus == ABAuthorizationStatus.Restricted) { print("access denied") } else if (sysAddressBookStatus == ABAuthorizationStatus.Authorized) { print("access granted") //删除联系人 self.deleteRecord(); } } //删除联系人 func deleteRecord(){ //定义一个错误标记对象,判断是否成功 var error:Unmanaged<CFErrorRef>? let sysContacts:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray //遍历通讯录 for contact in sysContacts { //获取姓名 let lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as! String? ?? "" let firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as! String? ?? "" var success:Bool = false if lastName == "李" && firstName == "大木"{ success = ABAddressBookRemoveRecord(addressBook, contact, nil) print("删除结果:\(success)") } } //保存数据库 let success = ABAddressBookSave(addressBook, &error) print("修改数据库是否成功:\(success)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }}
0 0
- Swift - 添加、修改、删除通讯录联系人
- 通讯录, 获取联系人, 删除联系人
- android通讯录 添加联系人
- Android-通讯录:添加联系人
- 添加联系人至通讯录
- iOS开发:通讯录之联系人添加、移动、删除
- iPhone通讯录联系人的增加、删除、修改的操作
- iPhone通讯录联系人的增加、删除、修改的操作
- 用c语言实现一个通讯录; 通讯录可以存储1000个人的信息,信息包括姓名、性别、年龄、电话、住址 提供方法: 1.添加联系人信息 2.删除指定联系人信息 3.查找指定联系人信息 4.修改指定联系&
- 用C语言模拟实现一个通讯录,要求实现其添加、删除、修改、查找、显示和排序联系人信息的功能
- 能够实现添加,修改及删除的通讯录
- iPhone 添加删除联系人
- 删除iphone4通讯录里的所有联系人
- 通讯录操作问题--删除联系人不彻底
- 应用:C语言通讯录---删除联系人
- 【通讯录系统】:实现一个通讯录(可添加、删除、修改、查找、显示、清空、排序)
- iphone 调用系统通讯录添加联系人
- Android ContentProvider往通讯录添加联系人
- 设计模式_原型模式
- 264. Ugly Number II LeetCode
- java程序为什么无须delete语句进行内存回收
- hdoj King's Cake 5640 (模拟)
- Win7下配置Oracle数据源
- Swift - 添加、修改、删除通讯录联系人
- 面向对象基础知识
- 串行通信、并行通信、同步通信、异步通信
- TableView 插入表格和删除表格
- ArrayList、LinkedList和Vector 的区别
- AIX调整swap大小
- rel_exp - IS BOUND
- this指针
- JVM:编译加载与自定义类加载器