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