J'ai lu la documentation officielle d'Apple sur le sorting des contacts, même si je ne suis pas sûr de savoir comment l'implémenter. Donc, voici la requête d'extraction:
let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch)
et mon ordre de sorting préféré:
let sortOrder = CNContactSortOrder.UserDefault
et voici comment je récupère habituellement des contacts:
do { try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in self.contacts.append(contact) }) } catch let error as NSError { print(error.localizedDescription) }
Maintenant, que dois-je faire avec sortOrder
? Où et devrais-je inclure dans tout mon process de récupération?
Mis à jour pour 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) }
Ancienne version écrit comme ça
fetchRequest.sortOrder = CNContactSortOrder.UserDefault
après que l'object fetchRequest a été créé pour que votre sortie finale ressemble à
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) }