How to fetch all contacts from my phonebook iOS swift
Solution:
Before run the below code must add the "Privacy - Contacts Usage Description" key in info.plist
I had created the below class for print the contacts in my phonebook.
Before run the below code must add the "Privacy - Contacts Usage Description" key in info.plist
I had created the below class for print the contacts in my phonebook.
import UIKit
import ContactsUI
import Foundation
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("called")
let contactStore = CNContactStore()
var contacts = [CNContact]()
let keys = [CNContactFormatter.descriptorForRequiredKeys(for: .fullName)]
let request = CNContactFetchRequest(keysToFetch: keys)
do {
try contactStore.enumerateContacts(with: request) {
(contact, stop) in
// Array containing all unified contacts from everywhere
contacts.append(contact)
self.getcontacts()
}
print("hai",contacts)
}
catch {
print("unable to fetch contacts")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func didTapOnNewcontact(_ sender: Any) {
let con = CNContact()
let vc = CNContactViewController(forNewContact: con)
self.navigationController?.pushViewController(vc, animated: true)
}
func getcontacts() {
let contactStore = CNContactStore()
var contacts = [CNContact]()
let keys = [
CNContactFormatter.descriptorForRequiredKeys(for: .fullName),
CNContactPhoneNumbersKey,
CNContactEmailAddressesKey
] as [Any]
let request = CNContactFetchRequest(keysToFetch: keys as! [CNKeyDescriptor])
do {
try contactStore.enumerateContacts(with: request){
(contact, stop) in
// Array containing all unified contacts from everywhere
contacts.append(contact)
for phoneNumber in contact.phoneNumbers {
if let number = phoneNumber.value as? CNPhoneNumber, let label = phoneNumber.label {
let localizedLabel = CNLabeledValue<CNPhoneNumber>.localizedString(forLabel: label)
print("\(contact.givenName) \(contact.familyName) tel:\(localizedLabel) -- \(number.stringValue), email: \(contact.emailAddresses)")
}
}
}
print(contacts)
} catch {
print("unable to fetch contacts")
}
}
}
Comments
Post a Comment