在IOS中通过移动联系人获取人名和号码

Tes*_*ter 2 contacts ios swift

我想在我的应用https://www.youtube.com/watch?v=HKCXwm7r838中完成此过程.但本教程中的代码适用于较旧的IOS版本,我使用的是IOS 10,Xcode 8.2,Swift 3.0,所以它不适用于我.我尝试了以下代码来显示联系人列表.有用.

import UIKit
import ContactsUI
class ViewController: UIViewController, CNContactPickerDelegate{

    @IBOutlet weak var textLabel: UILabel!
    override func viewDidLoad()
    {
        super.viewDidLoad()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }
    func addExistingContact()
    {

    }
    func contactPicker(picker: CNContactPickerViewController, didSelectContact contacts: CNContact)
    {
       // print(contacts.givenName)

    }

    @IBAction func button(_ sender: Any)
    {
        let contactPicker = CNContactPickerViewController()
        contactPicker.delegate = self
        contactPicker.displayedPropertyKeys =
            [CNContactGivenNameKey
                , CNContactPhoneNumbersKey]
        self.present(contactPicker, animated: true, completion: nil)
    }

    func contactPickerDidCancel(picker: CNContactPickerViewController)
    {
        print("Cancel Contact Picker")
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是,当我从列表中选择任何联系人姓名时,联系人列表必须立即消失,然后所选的名称和号码必须显示在viewController中的两个标签/ textField中.有人能告诉我应该使用什么代码吗?提前致谢.

Kri*_*aCA 5

替代方法contactPicker(picker: CNContactPickerViewController, didSelectContact contacts: CNContact)contactPickerDidCancel(picker: CNContactPickerViewController)

func contactPicker(_ picker: CNContactPickerViewController, 
              didSelect contactProperty: CNContactProperty) {

}

func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
     // You can fetch selected name and number in the following way

    // user name
    let userName:String = contact.givenName 

    // user phone number
    let userPhoneNumbers:[CNLabeledValue<CNPhoneNumber>] = contact.phoneNumbers        
    let firstPhoneNumber:CNPhoneNumber = userPhoneNumbers[0].value 

    // user phone number string
    let primaryPhoneNumberStr:String = firstPhoneNumber.stringValue 
}

func contactPickerDidCancel(_ picker: CNContactPickerViewController) {

}
Run Code Online (Sandbox Code Playgroud)

鉴于您的要求是ContactPicker在单击联系人后立即关闭,您不应实现以下方法.从代码中删除下面给出的方法.

func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) {

}

func contactPicker(_ picker: CNContactPickerViewController, didSelectContactProperties contactProperties: [CNContactProperty]) {

}
Run Code Online (Sandbox Code Playgroud)