0

目前我正在开发一个应用程序,它将利用设备地址簿中可用的联系人。

我想通过获取联系人列表。地址簿,除了每个联系人之外还有复选框选项。谁能告诉我我该怎么做?

4

2 回答 2

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;

}
于 2013-03-19T09:25:01.750 回答
2

要访问地址簿,请考虑使用ABAddressBook。

ABAddressBook 不透明类型(其实例称为地址簿)为地址簿提供了一个编程接口 - 一个由多个应用程序使用的集中式数据库,用于存储有关人员的个人信息。地址簿数据库还支持包含一个或多个人的“组”的概念。人可能属于多个组,组也可能属于其他组。

ABAddressBook opaque 类型提供了创建对地址簿数据库的引用、保存更改、丢弃更改以及注册外部(由其他线程或进程)对数据库所做的更改的功能。

用地址簿的结果填充 a UITableView,然后以编程方式为每个 UITableViewCell 添加一个复选标记,如下所示:

cell.accessoryType = UITableViewCellAccessoryCheckmark; 
于 2013-03-19T09:15:38.920 回答