现在我正在使用这段代码从我的手机中获取联系人:
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 to ABPropertyId
。如果这个问题很简单并且有许多答案,请原谅我,因为我找不到适合我的任何一个,因为我不想调用额外的函数。所以我如何获取全名并将其添加到字典arrOfDictContacts
中?
record
是什么? - AAAlet name = CNContactFormatter.string(from: contact, style: .fullName)
- B Roy DawsonCNContactFetchRequest
的 keys 中添加CNContactFormatter.descriptorForRequiredKeys(for: .fullName) as CNKeyDescriptor
,否则应用程序会崩溃。 - ZAFAR007