2016-01-18 15 views
9

Ho letto la documentazione Apple ufficiale sull'ordinamento dei contatti, anche se non sono sicuro di come implementarlo. Così, qui è prendere richiesta:Come ordinare i contatti utilizzando Contatti con Swift

let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch) 

e il mio preferito ordinamento:

let sortOrder = CNContactSortOrder.UserDefault 

e questo è il modo solito prelevo contatti:

do { 
     try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in 
       self.contacts.append(contact) 
     }) 
    } 
    catch let error as NSError { 
     print(error.localizedDescription) 
    } 

Ora cosa devo fare con sortOrder? Dove e dovrei includere nel mio intero processo di recupero?

risposta

22

aggiornato per 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) 
     } 

vecchia versione scrittura come questo

fetchRequest.sortOrder = CNContactSortOrder.UserDefault 

dopo fetchRequest oggetto creato in modo che il risultato finale è come

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) 
    } 
+1

Ho raggiunto il limite giornaliero massimo, ma è corretto, grazie. Ho appena rimosso lo spazio tra 'CNContactSortOrder' e' UserDefault'. –

+0

grazie per la modifica. puoi invitare questo il giorno successivo – jay

+1

O questa risposta è così eccezionale !! Grazie :) –