最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IOS 通訊錄的訪問和修改的實(shí)現(xiàn)

 更新時(shí)間:2017年06月27日 11:54:26   投稿:lqh  
這篇文章主要介紹了IOS 通訊錄的訪問和修改的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

IOS 通訊錄的訪問和修改的實(shí)現(xiàn)

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

①請求授權(quán)

先判斷授權(quán)狀態(tài),如果未授權(quán)則進(jìn)行授權(quán)。

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

②獲取通訊錄的聯(lián)系人

c語言沒有對象,通過一些以Ref結(jié)尾的指針來獲取數(shù)據(jù)。

注意C語言數(shù)組的規(guī)模通過函數(shù)獲取,拿到元素也要通過函數(shù)。

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

注意電話是一個(gè)數(shù)組。

// 先判斷授權(quán)狀態(tài) 
if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) { 
  NSLog(@"未授權(quán)"); 
  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(@"聯(lián)系人:%@ %@",lastName,firstName); 
  NSInteger cnt = ABMultiValueGetCount(phones); 
  for (int j = 0; j < cnt; j++) { 
    CFStringRef phone = ABMultiValueCopyValueAtIndex(phones, j); 
    NSLog(@"電話:%@ ",phone); 
  } 
} 

③修改通訊錄聯(lián)系人

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

最后不要忘記保存。

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

④添加一個(gè)聯(lián)系人

注意添加電話時(shí)應(yīng)創(chuàng)建MultiValue。

// 先判斷授權(quán)狀態(tài) 
if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) { 
  NSLog(@"未授權(quán)"); 
  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(@"聯(lián)系人:%@ %@",lastName,firstName); 
  NSInteger cnt = ABMultiValueGetCount(phones); 
  for (int j = 0; j < cnt; j++) { 
    CFStringRef phone = ABMultiValueCopyValueAtIndex(phones, j); 
    NSLog(@"電話:%@ ",phone); 
  } 
} 

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

相關(guān)文章

最新評論

株洲市| 武冈市| 合肥市| 东兴市| 灵石县| 鄂州市| 成安县| 临沧市| 安顺市| 乐都县| 建阳市| 宜兰县| 肥城市| 织金县| 宁河县| 辰溪县| 巨野县| 肥西县| 红桥区| 河西区| 乃东县| 湘潭市| 辽源市| 定兴县| 新安县| 永济市| 聂拉木县| 建宁县| 天津市| 修文县| 昭觉县| 讷河市| 会同县| 南昌县| 墨江| 郑州市| 安庆市| 墨玉县| 基隆市| 和静县| 玉门市|