目前我正在开发一个应用程序,它将利用设备地址簿中提供的联系人。
我希望通过以下方式获取联系人列表。地址簿,除了每个联系人之外还有复选框选项。谁能告诉我怎么做到这一点?
答案 0 :(得分: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;
}
答案 1 :(得分:2)
要访问地址簿,请查看使用ABAddressBook.
ABAddressBook opaque类型(其实例称为地址 books)为Address Book-a提供了一个编程接口 多个应用程序用于存储个人的集中式数据库 关于人的信息。通讯簿数据库也支持 包含一个或多个人的“群体”的概念。人可能属于 对于多个组,组也可能属于其他组。
ABAddressBook opaque类型提供了创建功能 引用通讯簿数据库,保存更改,丢弃 更改,并注册外部更改(由其他线程 或进程)到数据库。
使用地址簿的结果填充UITableView
,然后以编程方式为每个UITableViewCell添加一个复选标记,如下所示:
cell.accessoryType = UITableViewCellAccessoryCheckmark;