2015-09-09 2 views
10
erhält

nun diesen Code verwenden die Kontakte von meinem Handy zu holen:Wie Vollständiger Namen der Kontakte in 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)"]) 
      } 
     } 
    } 

Hier kABPersonFirstNameProperty ist mit nur den ersten Namen zu bekommen.

Ich möchte den vollständigen Namen der Kontakte erhalten !!!

Wenn ich, kABPersonCompositeNameFormatFirstNameFirst dann bin immer Fehler wie Int is not convertible toABPropertyId

Pardon me Wenn diese Frage einfach und haben viele Antworten, konnte ich einen von ihnen finden für mich arbeiten, wie ich möchte nicht zusätzliche Funktion aufzurufen.

Also, wie kann ich den vollständigen Namen und fügen Sie es dem Wörterbuch arrOfDictContacts?

Antwort

21

in Adressbuch-API können Sie die vollständigen/zusammengesetzten Namen mit dem folgenden Code erhalten:

let name = ABRecordCopyCompositeName(person).takeRetainedValue() 

in dem Kontakt API (für iOS 9+), können Sie diesen Code verwenden können:

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

Was ist der 'Rekord' hier? – AAA

+0

@AAA in Ihrem Code oben wäre es "Person". – erdekhayser

+0

ja, ich habe deine Antwort bearbeitet und es funktioniert :) – AAA