2013-03-19 90 views
0

目前我正在開發一個應用程序,它將利用設備的地址簿中可用的聯繫人。以編程方式訪問iOS中的地址簿?

我想通過獲取聯繫人列表。地址簿,除了每個聯繫人之外還有複選框選項。誰能告訴我我該怎麼做?

+1

closevote:請不要把它看作冒犯性的,你好像是一個新用戶,所以我只想解釋「爲什麼」。本網站不適用於「引導我」,「給我寫教程」,「教我」以及類似的問題。這種類型在這裏不被視爲「問題」。有不同的網站和利益團體致力於教學/指導。 SO旨在幫助解決具體問題,而不是像「我不知道如何開始」這樣的同事。 – quetzalcoatl 2013-03-19 09:21:38

回答

2

要訪問地址簿,看看使用ABAddressBook.

的ABAddressBook不透明類型使用多個(其實例被稱爲地址 書)提供了一個編程接口,地址簿,一個 集中式數據庫應用程序來存儲個人信息 。地址簿數據庫還支持包含一個或多個人的「組」的 概念。人們可能屬於 多個組,並且組也可能屬於其他組。

的ABAddressBook不透明類型(被其他線程 或過程)到數據庫創建 引用到地址簿數據庫,保存更改,丟棄 變化,並登記用於從外部取得變更提供的功能。

填充你的地址簿中的結果UITableView,然後添加一個對號各的UITableViewCell編程,類似如下:

cell.accessoryType = UITableViewCellAccessoryCheckmark; 
4

查找到ABAddressBook框架。以數組形式獲取聯繫人列表並在UItableview中填充此列表,並且可以使用UITableViewCellAccessoryCheckmark來顯示選定的聯繫人。

請參閱下面的代碼。它返回一個包含聯繫人的數組。這裏AddressObject是一個模態類。

-(NSArray*)addressBookLoader 
{ 
    CFErrorRef *error = NULL; 

    NSMutableArray *arrayofAddressClassObjects =[[NSMutableArray alloc]init]; 

    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL,error); 

    ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); 
    CFArrayRef sortedPeople =ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName); 

    //RETRIEVING THE FIRST NAME AND PHONE NUMBER FROM THE ADDRESS BOOK 

    CFIndex number = CFArrayGetCount(sortedPeople); 

    NSString *firstName; 
    NSString *phoneNumber ; 

    for(int i=0;i<number;i++) 
    { 

     ABRecordRef person = CFArrayGetValueAtIndex(sortedPeople, i); 
     firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 
     ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty); 
     phoneNumber = (__bridge NSString *) ABMultiValueCopyValueAtIndex(phones, 0); 

     if(phoneNumber != NULL) 
     { 

      AddressObject *obj = [[AddressObject alloc]init]; 
      obj.contactName = firstName; 
      obj.contactNumber = phoneNumber; 

      [arrayofAddressClassObjects addObject:obj]; 

     } 


    } 

    NSLog(@"x=%@",arrayofAddressClassObjects); 

    return arrayofAddressClassObjects; 

} 
+0

嗨@Xcoder需要模態類供參考... – Bala 2014-11-06 09:06:50