iPhone中連絡人的資訊是存放在系統資料庫中的。資料庫中的每一筆記錄都是一個ABRecordRef執行個體。
通訊錄主要存放兩種記錄:
1、連絡人的資訊:是ABPerson類型。主要包括連絡人的姓名,電話號碼,地址資訊。
2、分組資訊:是ABGroup類型。用於將連絡人分到不同的組中。它只有一個屬性,表示分組名稱。
在viewDidLoad中添加下面代碼,擷取所有連絡人和分組資訊:
ABAddressBookRef addressBook =ABAddressBookCreate();CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople (addressBook);CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups(addressBook);for (id person in (NSArray *) allPeople)[self logContact:person];for (id group in (NSArray *) allGroups)[self logGroup:group];CFRelease(allGroups);CFRelease(allPeople);CFRelease(addressBook);
使用ABAddressBookCreate建立一個AddressBook執行個體。ABAddressBook CopyArrayOfAllPeople和ABAddressBook CopyArrayOfAllGroups查詢出所有的連絡人和分組資訊。通過迴圈,使用logPerson和logGroup兩個方法將資訊輸出到控制台上。
logPerson方法:
CFStringRef name = ABRecordCopyCompositeName(person);
ABRecordID recId = ABRecordGetRecordID(person);
NSLog(@"Person Name: %@ RecordID:%d",name, recId);
logGroup方法:
CFStringRef name = ABRecordCopyValue(group,kABGroupNameProperty);
ABRecordID recId = ABRecordGetRecordID(group);
NSLog(@"Group Name: %@ RecordID:%d",name, recId);
總結:本文簡單的講述了如何通過sdk,將iphone的通訊錄資訊檢索出來。