如何在 Swift 中获取联系人的全名

How to get Full Name of Contacts in Swift

现在我正在使用此代码从我的 phone:

中获取联系人
 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

在地址簿API中,您可以通过以下代码获取full/composite姓名:

let name = ABRecordCopyCompositeName(person).takeRetainedValue()

在联系人 API(对于 iOS 9+)中,您可以使用此代码:

let name: String? = CNContactFormatter.string(from: contact, style: .fullName)