国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS-通信錄

2019-11-14 18:20:01
字體:
來源:轉載
供稿:網友

1.概述:

* 對于每一個移動設備而言,都有一個內置的數據庫-----通訊錄。

* 在IOS上,通訊錄放在SQLite3數據庫中。

* 由于不同應用之間不能直接訪問,我們想要實現對數據庫的訪問,必須使用蘋果開放的API.

* 蘋果公司對數據訪問開放的API是AddressBook(低級API)和AddressBookUI(高級API).

* 為了安全考慮,訪問通訊錄需要經過用戶授權,僅需一次授權即可

2.AddressBook 和 AddressBookUI的區別:

* AddressBook屬于低級API,可以獲取通訊錄中的數據,但是需要自構UI界面

* AddressBookUI屬于高級API,為我們提供了UI界面,使用起來比較方便。

3.AddressBook詳述

* 在AddressBook中,比較常用的類是ABAddressBook, ABPerson, ABGroup, ABRecord

* ABAddressBook :封裝了通訊錄的接口。(對應ABAddressBookRef)

* ABPerson           :封裝通信錄個人的信息數據。(對應ABPersonRef)

* ABGroup             :封裝了通訊錄組信息數據。(對應ABGrouPRef)

* ABRecord            :封裝了數據庫的一條記錄。(對應ABRecordRef)

 想要獲取通信錄的信息,第一步是要導入AddressBook的框架,并在頭文件中寫入頭文件<AddressBook/AddressBook.h>

 用戶想要訪問通訊錄,第一步要創建通訊錄對象,用于用戶請求訪問通訊錄,代碼如下:

1 ABAddressBookRef addressbook = ABAddressBookCreateWithOptions(NULL, NULL);

 * 如果是第一次訪問通信錄,需要獲取用戶的授權,不是第一次,直接訪問。系統給我們提供的函數是:

 *  ABAddressBookRequestaccessWithCompletion(<#ABAddressBookRef addressBook#>, <#^(bool granted, CFErrorRef error)completion#>)

 * 如果第一次訪問,點擊允許訪問,granted的值為一。

 * 只要granted的值為真的情況下,才允許訪問通訊錄。

 * 獲取通訊錄的所有記錄的代碼如下:

1 NSArray *array = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressbook);

 * 接下來我們要獲取通訊錄的聯系人的姓名:代碼如下:

1 ABRecordRef record = array[i];2 NSString *name = (NSString *)ABRecordCopyCompositeName(record);

 * 獲取聯系人的手機號的時候,是屬于一個多值屬性,跟后去聯系人姓名的時候有點不同,聯系人姓名屬于單值屬性,代碼如下:

1 ABMultiValueRef ref = ABRecordCopyValue(record, kABPersonPhoneProperty);2 NSString *phone = ABMultiValueCopyValueAtIndex(ref, 0);

 * 整體代碼為:(第二個函數的功能是去掉電話號碼中的特殊字符,因為我們獲取到得號碼是蘋果給我們分隔好的)

-(void)getAddressbookContent{    ABAddressBookRef addressbook = ABAddressBookCreateWithOptions(NULL, NULL);    ABAddressBookRequestAccessWithCompletion(addressbook, ^(bool granted, CFErrorRef error) {        if (granted == YES)        {            NSArray *array = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressbook);            for (int i = 0; i < array.count; i ++)            {                ABRecordRef record = array[i];                NSString *name = (NSString *)ABRecordCopyCompositeName(record);                ABMultiValueRef ref = ABRecordCopyValue(record, kABPersonPhoneProperty);                NSString *phone = ABMultiValueCopyValueAtIndex(ref, 0);                NSString *phone1 = phone;                phone1 = [self deleteSpecialString:phone1];                contact *c = [[contact alloc]initWithName:name withPhone:phone1];                [_arrayContact addObject:c];                [c release];                CFRelease(name);                CFRelease(phone);                CFRelease(ref);            }        }    });}-(NSString *)deleteSpecialString:(NSString *)string{    string = [string stringByReplacingOccurrencesOfString:@"(" withString:@""];    string = [string stringByReplacingOccurrencesOfString:@")" withString:@""];    string = [string stringByReplacingOccurrencesOfString:@"-" withString:@""];    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];    return string;}

 4.ABAddressBookUI簡述

  * 使用這個類我們可以直接調出通訊錄的界面,代碼如下:

ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];[self presentViewController:picker animated:YES completion:nil];

 效果圖如下:

這個類有幾個比較常用的代理方法,分別是:

點擊取消按鈕,相應該方法

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker

點擊聯系人信息,是否跳轉到詳情界面

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person

在聯系人詳情界面中點擊了其它信息,是否跳轉到其它界面(例如,點擊時間,可以打開日歷)

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier

 

5.上面的介紹,只是通訊錄的基本使用,當然通訊錄的方法不止這些,例如可以修改,添加,刪除聯系人的信息,在此主要介紹了如何獲取通訊錄的信息。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淳化县| 白朗县| 方城县| 镇远县| 都江堰市| 那曲县| 乐平市| 隆化县| 吴堡县| 商河县| 胶州市| 池州市| 浦北县| 江门市| 鹤山市| 尤溪县| 福清市| 衡阳县| 辽阳市| 盐池县| 明水县| 广宁县| 绥化市| 平远县| 华坪县| 辽宁省| 秦皇岛市| 定陶县| 遂平县| 正定县| 金华市| 龙岩市| 蓬溪县| 弋阳县| 高阳县| 芦山县| 海兴县| 鄂托克旗| 临朐县| 荣成市| 红安县|