你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS 通訊錄的訪問和修改的實現

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

編輯:IOS開發綜合

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); 
  } 
} 

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

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved