IOS開發 - AddressBook 電話簿的操縱
訪問地址簿和單個聯系人數據的接口是基于C語言的函數,接口傳遞對地址簿各種對象的引用作為參數。管理地址簿中條目的基類對象是 ABRecord。一個 ABRecord 可以表示一個人 或者一個群體 ABGroup 。無論何時,在界面上選中一條記錄,或者使用框架進行查詢返回一條結果,系統都會返回一個指向 ABRecord 的指針,標示為 ABRecordRef。與地址簿 API 的大部分交互都涉及使用 ABRecordRef 這個引用類型。
常用訪問記錄的函數如下:
ABRecordID ABRecordGetRecord(ABRecordRef record);
返回 ABRecordID ,代表了 記錄在底層數據庫中的ID號。具有唯一性。ABRecordType ABRecordGetRecordType(ABRecordRef record);
返回記錄類型。可以是 kABPersonType 和 kABGroupTypeCFStringRef ABRecordCopyCompositeName(ABRecordRef record);
返回個人或群體完整名稱。例:NSString* name = (NSString*)ABRecordCopyCompositeName(record);
一、高層地址簿函數
1.獲得地址簿句柄
你必須先初始化地址簿,然后才能對其進讀寫操作。要獲得一個地址簿句柄,可以使用 ABAddressBookCreate函數:
#import <AddressBook/AddressBook.h> AddressBookRef ab = AddressBookCreate();
2. 保存地址簿
獲得了地址簿的引用就可以對其進行操作了,操作完畢要記得保存:CFErrorRef err; BOOL success = ABAddressBookSave(ab, &err);如果不確定是否需要保存,則可以用:
BOOL hasUnsavedChanges = ABAddressBookHasUnsavedChanges(ab);3.添加/刪除 記錄
CFErrorRef err; BOOL success =ABAddressBookAddRecord(ab, record, &err);//添加
CFErrorRef err; BOOL success =ABAddressBookRemoveRecord(ab, record, &err);//刪除二、查詢地址簿
地址簿框架僅僅提供了基本的查詢功能。可以用函數根據名字來查詢多個記錄,或者是根據特定記錄 ID 查詢單個記錄。
1.獲取地址簿中記錄總個數:CFIndex count = ABAddressBookGetPersonCount(ab); printf("%ld total entries in the address book\n",count);2. 獲取所有聯系人:
NSArray* array = (NSArray*)ABAddressBookCopyArrayOfAllPeople(ab); printf("Retrieved %d contacts\n",[array count]);3. 在聯系人列表中查詢一個特定的名字:
NSArray* arrayByName = (NSArray*)ABAddressBookCopyPeopleWithName(ab, CFSTR("Liu Wei"));函數如其名,這個函數返回的并不是地址簿中實際的對象,而是拷貝。要訪問這個數組的單個記錄,就用NSArray的方法啦:
ABRecordRef myRecord = [arrayByName objectAtIndex:0];除了通過名字查詢,你也可以直接通過ID查詢(假如你知道ID的話):
ABRecordRef myRecord = ABAddressBookGetPersonWithRecordID(ab, recordID);轉自:http://blog.csdn.net/iukey/article/details/7343650
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!