Как получить полное имя контактов в 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)"])
            }
        }
    }

Здесь я использую kABPersonFirstNameProperty, чтобы получить только первое имя.

Я хочу получить полное имя контактов!!!

Если я использую kABPersonCompositeNameFormatFirstNameFirst, тогда я получаю ошибку как Int is not convertible toABPropertyId

Простите меня. Если этот вопрос прост и у меня много ответов, я мог бы найти, что любой из них работает на меня, поскольку я не хочу вызывать дополнительную функцию.

Итак, как я могу получить полное имя и добавить его в словарь arrOfDictContacts?

Ответ 1

В API AddressBook вы можете получить полное/составное имя со следующим кодом:

let name = ABRecordCopyCompositeName(person).takeRetainedValue()

В API контактов (для iOS 9+) вы можете использовать этот код:

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