Я создал таблицу с ячейкой. в изображении и имени ячейки таблицы есть номера меток.
как получить номер телефона
cell.phoneNumber.text = contacts[indexPath.row].phoneNumber
это мой контроллер:
import UIKit
import Contacts
class ContactsViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet weak var joinersTableView: UITableView!
var contacts = [CNContact]()
override func viewDidLoad() {
super.viewDidLoad()
joinersTableView.register(UINib(nibName: "ContactsTableViewCell", bundle: nil), forCellReuseIdentifier: "ContactsTableViewCell")
ContactsModel.shared.getLocalContacts {(contact) in
self.contacts.append(contact!)
self.joinersTableView.reloadData()
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return contacts.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: ContactsTableViewCell = tableView.dequeueReusableCell(withIdentifier: "ContactsTableViewCell") as! ContactsTableViewCell
cell.nameLbl.text = contacts[indexPath.row].givenName + " " + contacts[indexPath.row].familyName
cell.empRoleLbl.text = contacts[indexPath.row].phoneticMiddleName
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 65.0
}
}
Это модель:
import UIKit
import Contacts
import ContactsUI
class ContactsModel: NSObject {
static let shared = ContactsModel()
private override init(){}
typealias contacts = (CNContact?) -> ()
func getLocalContacts(completion:@escaping contacts) {
let contacts = CNContact()
let contactStore = CNContactStore()
let keys = [CNContactFormatter.descriptorForRequiredKeys(for: .fullName),CNContactPhoneNumbersKey] as [Any]
let request = CNContactFetchRequest(keysToFetch: keys as! [CNKeyDescriptor])
do {
try contactStore.enumerateContacts(with: request) {(contact, stop) in
completion(contact)
}
} catch {
print(error.localizedDescription)
completion(contacts)
}
}
}
, если я запускаю проект, получая это
Завершение приложения из-за неперехваченного исключения 'CNPropertyNotFetchedException ', причина:' Свойство не было запрошено при получении контакта. '