iOS9通讯录框架Contacts的简单使用
来源:互联网 发布:网络电视哪种好 编辑:程序博客网 时间:2024/06/06 08:55
iOS9通讯录框架Contacts的简单使用
第一步,导入Contacts框架,import Contacts ,这个是不带UI的框架,可以直接获取联系人
// 检查状态 let status: CNAuthorizationStatus = CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts) switch status { case .NotDetermined: print("是否允许访问联系人,当应用第一次安装在设备上时将处于此状态") case .Restricted: print("不能够访问联系人数据,并且用户也不能在设置中改变这个状态") case .Denied: print("不允许应用访问联系人数据") case .Authorized: print("能够自由访问联系人") }第二步,如果没有获取授权就去获取
private func getAuth() { CNContactStore().requestAccessForEntityType(CNEntityType.Contacts) { (status: Bool, error) in if error != nil { print("error = \(error)") } // 根据status的状态来判断是否授权成功 print("status = \(status)") } }
第三步、获取通讯录信息
// 获取通讯录信息 private func getContactMessage() { let formatter = CNContactFormatter.descriptorForRequiredKeysForStyle(CNContactFormatterStyle.FullName) // 这里的 Key 可以根据需要设置 let request = CNContactFetchRequest.init(keysToFetch: [formatter, CNContactIdentifierKey, CNContactPhoneNumbersKey, CNContactEmailAddressesKey, CNContactEmailAddressesKey, CNContactImageDataAvailableKey]) do { try CNContactStore().enumerateContactsWithFetchRequest(request) {[weak self] (contact: CNContact, status:UnsafeMutablePointer<ObjCBool>) in // 保存到数组 self!.dataSources.append(contact) } } catch let error { print("获取信息 error = \(error)") } }第四步、打印获取的信息
private func contactMessage() { for contact in dataSources { let number = contact.phoneNumbers // 演示需要,只打印电话号码,这里是一个数组,可能不止一个号码 for obj in number { let model = obj.value as! CNPhoneNumber print("number = \(model.stringValue)") } } }下面介绍包含UI界面的通讯录框架ContactsUI,使用之前要导入import ContactsUI
let contact = CNContactPickerViewController() contact.delegate = self // 设置要搜索的信息,可以不设置这个属性 contact.displayedPropertyKeys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactBirthdayKey, CNContactImageDataKey, CNContactPhoneNumbersKey] // 设置某个搜索的条件,不符合条件的项不可选(搜索号码大于2条的) let predicate = NSPredicate(format: "phoneNumbers.@count > 2", argumentArray: nil) contact.predicateForEnablingContact = predicate presentViewController(contact, animated: true, completion: nil)
let contact = CNContactPickerViewController() contact.delegate = self // 设置要搜索的信息,可以不设置这个属性 contact.displayedPropertyKeys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactBirthdayKey, CNContactImageDataKey, CNContactPhoneNumbersKey] // 搜索某个属性的条件 let predicateProperty = NSPredicate(format: "(key == 'emailAddresses') AND (value LIKE '*@qq.com')", argumentArray: nil) contact.predicateForSelectionOfProperty = predicateProperty presentViewController(contact, animated: true, completion: nil)
下面介绍CNContactPickerDelegate的代理方法
extension ViewController: CNContactPickerDelegate { func contactPickerDidCancel(picker: CNContactPickerViewController) { print("点击取消调用") } func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) { print("返回单个CNContact数据的时候调用 = \(contact)") } func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) { print("当搜索条件为 Property 即为属性 predicateForSelectionOfProperty 赋值并且返回的是单个数据的时候调用 = \(contactProperty)") } func contactPicker(picker: CNContactPickerViewController, didSelectContacts contacts: [CNContact]) { print("返回一组[CNContact]数据的时候调用 = \(contacts)") } func contactPicker(picker: CNContactPickerViewController, didSelectContactProperties contactProperties: [CNContactProperty]) { print("当搜索条件为 Property 即为属性 predicateForSelectionOfProperty 赋值并且返回的是一组数据的时候调用 = \(contactProperties)") }}
0 0
- iOS9通讯录框架Contacts的简单使用
- iOS---iOS9中获取通讯录的方法:Contacts. framework简单使用
- iOS9 新的通讯录框架
- iOS9.0 Contacts/Contacts.h的使用 联系人操作
- iOS9 获取手机通讯录及contact框架的使用
- iOS9-Contacts本地电话本框架
- iOS9全新的联系人相关框架——Contacts Framework
- Contacts---调用通讯录的功能
- IOS 最新通讯录和<Contacts/Contacts.h>框架
- iOS9关键字的简单使用
- iOS9通讯录
- AddressBookUI AddressBook Contacts简单使用
- iOS9中spotlight的简单使用
- iOS9 升级后UIAlertController的简单使用
- Android Contacts的使用
- 使用Contacts Contract Content Provider操作通讯录最佳实践
- Contacts-Framework获取通讯录
- contacts(通讯录)数据库
- JAVA学习(10) 继承(3) 继承中的构造函数
- 通讯录
- 如何正确使用const,static,extern
- Python 基础学习7 - print line
- android studio 真机运行的时候gradle 报错 AGPBI: {"kind":"SIMPLE","text":"Error: C
- iOS9通讯录框架Contacts的简单使用
- 实例变量与成员变量的使用
- 链表——翻转
- namespaces - overview of Linux namespaces
- #pragma hdrstop
- OpenCV Kalman滤波器
- javascript 面向对象基础(二) 包装对象原型链
- java的学习之路
- 【BZOJ3142】[Hnoi2013]数列【组合数学】