Swift-アクセスシステムを使用した通信録インタフェース


1,通信録インタフェース紹介通信録はデータベースであり,アドレス帳,電話帳とも呼ばれ,連絡先に関する情報が格納されている.アクセス通信録を実現するには,(1)AddressBook.frameworkフレームワーク:インタフェースがなく、コードによってすべての連絡先情報(2)AddressBookUIを取得する.frameworkフレームワーク:システムが提供する通信録インタラクティブインタフェースからアクセス
2.連絡先レコードの属性1つの連絡先レコードには、多くの属性があり、これらの属性は単値属性と多値属性に分けられる.単一値属性は、姓、名前、部門、注釈など、1つの値しかない属性です.多値属性は、電話番号、Email、アドレスなど、複数の値を含む集合タイプです.
3、多値属性ラベルのローカル名は、多値属性にlabel(ラベル)、value(値)、IDなどの部分を含み、ラベルと値は重複可能であり、IDは重複できない.ラベルについては、ABAddressBookCopyLocalizedLabel()メソッドを使用してローカルラベル名(ワーク、ホームなど)に変更できます.さもないとプリントアウトされます!! , !! このようなデータ.
4.通信録インタフェースの使用例ここでは、通信録インタフェースを使用して連絡先にアクセスし、選択した連絡先の名前とすべての電話を印刷します.(コードを使用して連絡先を取得したい場合、またはより多くの連絡先属性を読み取る方法を知りたい場合は、別の記事「Swift-アクセスアドレス帳連絡先(純粋なコードで実現)」を参照してください.
5,くだらないことはあまり言わないで、直接コードをつけて以下のようにします
import UIKit
import AddressBookUI

class ViewController: UIViewController ,ABPeoplePickerNavigationControllerDelegate{

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //            
        let picker = ABPeoplePickerNavigationController()
        picker.peoplePickerDelegate = self
        self.presentViewController(picker, animated: true) { () -> Void in

        }
    }

    func peoplePickerNavigationController(peoplePicker:ABPeoplePickerNavigationController,
        didSelectPerson person: ABRecord) {
            //   
            let lastName = ABRecordCopyValue(person, kABPersonLastNameProperty).takeRetainedValue()
                as! String
            print("     :\(lastName)")

            //   
            let firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty).takeRetainedValue()
                as! String
            print("     :\(firstName)")

            //    
            let phoneValues:ABMutableMultiValueRef? = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
            if phoneValues != nil {
                print("     :")
                for i in 0 ..< ABMultiValueGetCount(phoneValues){

                    let phoneLabel = ABMultiValueCopyLabelAtIndex(phoneValues, i).takeRetainedValue()
                        as CFStringRef;
                    //        (        ,  work、home)
                    let localizedPhoneLabel = ABAddressBookCopyLocalizedLabel(phoneLabel).takeRetainedValue() as String
                    let value = ABMultiValueCopyValueAtIndex(phoneValues, i)
                    let phone = value.takeRetainedValue() as! String
                    print("\(localizedPhoneLabel):\(phone)")
                }
            }
    }

    func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController,
        didSelectPerson person: ABRecord, property: ABPropertyID,
        identifier: ABMultiValueIdentifier) {

    }

    //      
    func peoplePickerNavigationControllerDidCancel(peoplePicker: ABPeoplePickerNavigationController) {
        //        
        peoplePicker.dismissViewControllerAnimated(true, completion: { () -> Void in

        })
    }

    func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController,
        shouldContinueAfterSelectingPerson person: ABRecord) -> Bool {
            return true
    }

    func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController,
        shouldContinueAfterSelectingPerson person: ABRecord, property: ABPropertyID,
        identifier: ABMultiValueIdentifier) -> Bool {
            return true
    }