// アドレスブックを生成
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, nil);
// アドレスブックのレコード配列を取得
CFArrayRef records = ABAddressBookCopyArrayOfAllPeople(book);
// 配列の要素の数だけ繰り返す
for (int i = 0 ; i < CFArrayGetCount(records) ; i++) {
// 1レコード取得
ABRecordRef record = CFArrayGetValueAtIndex(records, i);
// 名を取得
NSString *firstName = (NSString*)ABRecordCopyValue(record, kABPersonFirstNameProperty);
if (firstName == nil) {
firstName = @""; // 無ければ空文字に
}
// 氏を取得
NSString *lastName = (NSString*)ABRecordCopyValue(record, kABPersonLastNameProperty);
if (lastName == nil) {
lastName = @""; // 無ければ空文字に
}
// 氏名を生成
NSString *name = [NSString stringWithFormat:@"%@ %@", lastName, firstName];
NSLog(@"%@", name);
if (firstName != nil) {
CFRelease(firstName);
}
if (lastName != nil) {
CFRelease(lastName);
}
// レコードから電話番号の取得
ABMultiValueRef tels = ABRecordCopyValue(record, kABPersonPhoneProperty);
if (ABMultiValueGetCount(tels)) {
NSString *tel = (NSString*)ABMultiValueCopyValueAtIndex(tels, 0);
NSLog(@"%@", tel);
CFRelease(tel);
}
}
CFRelease(book);
CFRelease(records);
「ABRecordCopyValue」のパラメータで指定するkABPersonFirstNameProperty等で連絡先から何を取得するかを指定します。
その他プロパティには以下のものがあります。
| kABPersonFirstName | ファーストネーム |
| kABPersonLastName | ラストネーム |
| kABPersonMiddleName | ミドルネーム |
| kABPersonPrefixProperty | プレフィックス |
| kABPersonSuffixProperty | サフィックス |
| kABPersonNicknameProperty | ニックネーム |
| kABPersonFirstNamePhoneticProperty | ファーストネームの読み |
| kABPersonLastNamePhoneticProperty | ラストネームの読み |
| kABPersonMiddleNamePhoneticProperty | ミドルネームの読み |
| kABPersonOrganizationProperty | 組織 |
| kABPersonJobTitleProperty | 役職 |
| kABPersonDepartmentProperty | 部門 |
| kABPersonDepartmentProperty | Eメール |
| kABPersonBirthdayProperty | 誕生日 |
| kABPersonNoteProperty | メモ |
| kABPersonCreationDateProperty | 作成日 |
| kABPersonModificationDateProperty | 更新日 |
| kABPersonAddressProperty | 住所 |
| kABPersonDateProperty | 日付 |
| kABPersonKindProperty | 種別 |
| kABPersonPhoneProperty | 電話番号 |
| kABPersonInstantMessageProperty | インスタントメッセージ |
| kABPersonURLProperty | URL |
| kABPersonRelatedNamesProperty | 関係 |
また、アドレスブックから取得した各種情報はCFReleaseで解放する必要があります。(ARCを使用していない場合)












