2013-03-19 39 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