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