How to sort contacts using Contacts with Swift
Updated For Swift 4.0
let fetchRequest = CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey as CNKeyDescriptor, CNContactFamilyNameKey as CNKeyDescriptor, CNContactMiddleNameKey as CNKeyDescriptor, CNContactEmailAddressesKey as CNKeyDescriptor,CNContactPhoneNumbersKey as CNKeyDescriptor])
fetchRequest.sortOrder = CNContactSortOrder.userDefault
let store = CNContactStore()
do {
try store.enumerateContacts(with: fetchRequest, usingBlock: { (contact, stop) -> Void in
// print(contact.phoneNumbers.first?.value ?? "not found")
})
}
catch let error as NSError {
print(error.localizedDescription)
}
Old Version write like this
fetchRequest.sortOrder = CNContactSortOrder.UserDefault
after fetchRequest object created so your final output is like
let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch)
fetchRequest.sortOrder = CNContactSortOrder.UserDefault
do {
try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in
self.contacts.append(contact)
})
}
catch let error as NSError {
print(error.localizedDescription)
}
If you are using SwiftyContacts, you can pass in the sort option in the fetchContacts(..)
request, see below:
import SwiftyContacts
fetchContacts(ContactsSortorder: .givenName) { (result) in
switch result {
case .success(let contacts):
print(contacts)
case .failure(let error):
print(error)
}
}