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

首頁 > 系統 > iOS > 正文

IOS 通訊錄的訪問和修改的實現

2020-07-26 02:46:39
字體:
來源:轉載
供稿:網友

IOS 通訊錄的訪問和修改的實現

在iOS端可以通過AddressBook或者AddressBookUI兩個框架實現,區別是第二個框架帶視圖,一般使用第一個框架就夠了。
下面介紹AddressBook框架的使用,注意這個是C語言框架,使用起來比較麻煩。

①請求授權

先判斷授權狀態,如果未授權則進行授權。

// 1.主動請求授權,先判斷授權狀態 NSInteger state = ABAddressBookGetAuthorizationStatus(); if (state == kABAuthorizationStatusAuthorized) {   NSLog(@"已經授權"); }else{   ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);   ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {     if (granted) {       NSLog(@"授權成功");     }else{       NSLog(@"授權失敗");     }   }); } 

②獲取通訊錄的聯系人

c語言沒有對象,通過一些以Ref結尾的指針來獲取數據。

注意C語言數組的規模通過函數獲取,拿到元素也要通過函數。

注意一些枚舉值以k開頭。

注意電話是一個數組。

// 先判斷授權狀態 if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {   NSLog(@"未授權");   return; }  ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(book); CFIndex count = CFArrayGetCount(persons); for (NSInteger i = 0; i < count; i++) {   ABRecordRef person = CFArrayGetValueAtIndex(persons, i);   CFStringRef lastName = ABRecordCopyValue(person, kABPersonLastNameProperty);   CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);   ABMutableMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);   NSLog(@"聯系人:%@ %@",lastName,firstName);   NSInteger cnt = ABMultiValueGetCount(phones);   for (int j = 0; j < cnt; j++) {     CFStringRef phone = ABMultiValueCopyValueAtIndex(phones, j);     NSLog(@"電話:%@ ",phone);   } } 

③修改通訊錄聯系人

首先拿到通訊錄中的人,然后調用SetValue方法來修改值。

最后不要忘記保存。

// 先判斷授權狀態 if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {   NSLog(@"未授權");   return; }  ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(book); ABRecordRef person = CFArrayGetValueAtIndex(persons, 0); ABRecordSetValue(person, kABPersonLastNameProperty, @"changed", NULL); ABAddressBookSave(book, NULL); 

④添加一個聯系人

注意添加電話時應創建MultiValue。

// 先判斷授權狀態 if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {   NSLog(@"未授權");   return; }  ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(book); CFIndex count = CFArrayGetCount(persons); for (NSInteger i = 0; i < count; i++) {   ABRecordRef person = CFArrayGetValueAtIndex(persons, i);   CFStringRef lastName = ABRecordCopyValue(person, kABPersonLastNameProperty);   CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);   ABMutableMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);   NSLog(@"聯系人:%@ %@",lastName,firstName);   NSInteger cnt = ABMultiValueGetCount(phones);   for (int j = 0; j < cnt; j++) {     CFStringRef phone = ABMultiValueCopyValueAtIndex(phones, j);     NSLog(@"電話:%@ ",phone);   } } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳新县| 铁岭市| 周口市| 天祝| 疏附县| 富宁县| 崇礼县| 汤阴县| 邯郸县| 盐津县| 淳化县| 游戏| 博湖县| 博野县| 邻水| 古丈县| 台前县| 莒南县| 临汾市| 富宁县| 仁化县| 新营市| 通江县| 永仁县| 马龙县| 乌海市| 丽水市| 临潭县| 贵南县| 吉隆县| 博白县| 阳春市| 广宁县| 岱山县| 黑龙江省| 五原县| 建始县| 河北省| 民权县| 札达县| 古蔺县|