我使用ContactsUI获取所有联系人并将其显示在tableview中。在我的方法中,我仅获取了一个联系人的电话号码。我的问题是如何使用我的方法获取联系人的所有电话号码。
我的模型和获取方法:
import Foundation
import UIKit
import Contacts
class ContactsModel : NSObject {
let givenName:String
let familyName:String
let phoneNumber:String
let emailaddress:String
var identifier: String
var image:UIImage
init(givenName:String,familyName:String,phoneNumber:String,emailaddress:String,identifier:String,image:UIImage) {
self.givenName = givenName
self.familyName = familyName
self.phoneNumber = phoneNumber
self.emailaddress = emailaddress
self.identifier = identifier
self.image = image
}
class func generateModelArray() -> [ContactsModel]{
let contactStore = CNContactStore()
var contactsData = [ContactsModel]()
let key = [CNContactGivenNameKey,CNContactFamilyNameKey,CNContactImageDataKey,CNContactThumbnailImageDataKey,CNContactPhoneNumbersKey,CNContactEmailaddressesKey] as [CNKeyDescriptor]
let request = CNContactFetchRequest(keysToFetch: key)
try? contactStore.enumerateContacts(with: request,usingBlock: { (contact,stoppingPointer) in
let givenName = contact.givenName
let familyName = contact.familyName
let emailaddress = contact.emailaddresses.first?.value ?? ""
let phoneNumber = contact.phoneNumbers.first?.value.stringValue ?? ""
let identifier = contact.identifier
var image = UIImage()
if contact.thumbnailImageData != nil{
image = UIImage(data: contact.thumbnailImageData!)!
}else if contact.thumbnailImageData == nil,givenName.isEmpty || familyName.isEmpty{
image = UIImage(named: "usertwo")!
}
contactsData.append(ContactsModel(givenName: givenName,familyName: familyName,phoneNumber: phoneNumber as String,emailaddress: emailaddress as String,identifier: identifier,image: image))
})
return contactsData
}
}