2015-09-09 13 views
10

Ora sto usando questo codice per recuperare i contatti dal mio telefono:Come ottenere Nome completo di contatti a Swift

var addressBookReff: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue() 
    let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookReff).takeRetainedValue() 
    for person in people{ 
     if let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String { 
      let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue() 
      if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String { 
       self.arrOfDictContacts.addObject(["\(name)":"\(number)"]) 
      } 
     } 
    } 

Qui, sto usando kABPersonFirstNameProperty per ottenere solo il nome di battesimo.

Voglio ottenere il nome completo dei contatti !!!

Se uso, kABPersonCompositeNameFormatFirstNameFirst quindi sto errore ottenendo come Int is not convertible toABPropertyId

Pardon me Se questa domanda è semplice e hanno molte risposte, sono riuscito a trovare qualcuno di loro a lavorare per me come io non voglio chiamare la funzione supplementare.

Quindi, come posso ottenere il nome completo e aggiungerlo al dizionario ?

risposta

21

Nel API rubrica, è possibile ottenere il nome completo/composito con il seguente codice:

let name = ABRecordCopyCompositeName(person).takeRetainedValue() 

Nel Contatti API (per iOS 9+), è possibile utilizzare questo codice:

let name: String? = CNContactFormatter.stringFromContact(contact, style: .FullName) 
+0

qual è il 'record' qui? – AAA

+0

@AAA nel tuo codice sopra, sarebbe "persona". – erdekhayser

+0

sì, ho modificato la tua risposta e funziona :) – AAA