如何在 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)
现在我正在使用此代码从我的 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)