簡體   English   中英

Swift:用聯系人數據填充TextField的最簡單方法

[英]Swift: Simplest way to populate TextFields with Contacts data

我一直在嘗試用來自用戶聯系人的數據填充ViewController上的五個空文本字段。 似乎是使用Contacts Framework進行的最全面的討論和示例,但是由於它使用的是兩個視圖控制器,因此我無法集中精力在哪里完成工作。 現在,我的代碼基本上包括:

var thisContact = [CNContact]()

@IBAction func actionBtn_AddClientsFromContactsBtn(sender: AnyObject) {

    let contactPickerViewController = CNContactPickerViewController()

    contactPickerViewController.delegate = self

    presentViewController(contactPickerViewController, animated: true, completion: nil)
}


func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {

    didFetchContacts([contact])

    //The magic should be happening here, right???

    navigationController?.popViewControllerAnimated(true)

}


func didFetchContacts(contacts: [CNContact]) {
    for contact in contacts {
        self.thisContact.append(contact)
    }
}

出現“聯系人”列表,我可以選擇一個聯系人,然后彈出視圖(“聯系人”列表)。 當我對thisContact進行計數時,將統計所有529個聯系人。

請啟發我做錯了什么/正確的事情,以及我需要做些什么來獲取這五個鍵的數據並將其顯示在五個TextField中。

好吧,事實證明,我一直在思考問題和解決方案。 答案很簡單:

func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {

    let myContact = contact
    let myContactFirstName = myContact.givenName
    let myContactLastName = myContact.familyName
    let myContactJobTitle = myContact.jobTitle

    outletTextField_UserClientFirstName.text = myContactFirstName.uppercaseString
    outletTextField_UserClientLastName.text = myContactLastName.uppercaseString
    outletTextField_UserClientJobTitle.text = myContactJobTitle


    // Set the contact's work email address.
    var myContactWorkEmailAddress: String!
    for workEmailAddress in contact.emailAddresses {
        if workEmailAddress.label == CNLabelWork {
            myContactWorkEmailAddress = workEmailAddress.value as! String
            outletTextField_UserClientWorkEmailAddress.text = myContactWorkEmailAddress
            break
        }
    }

    // Set the contact's work phone number.
    var myContactWorkPhoneNumber: String!
    var myContactWorkPhoneNumberArray = [String]()
    for mainPhone in contact.phoneNumbers {
        if mainPhone.label == CNLabelPhoneNumberMain {
            let mainPhoneValue = mainPhone.value as! CNPhoneNumber
            myContactWorkPhoneNumberArray.append(mainPhoneValue.stringValue)
            myContactWorkPhoneNumber = myContactWorkPhoneNumberArray[0]
            outletTextField_UserClientMobilePhoneNumber.text = myContactWorkPhoneNumber
            break
        }
    }

    navigationController?.popViewControllerAnimated(true)

它可能並不完美,但是卻可以完美運行!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM