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