Отображение представления адресной книги только с именами, которые начинаются с 'A'? - PullRequest
0 голосов
/ 30 июля 2011

Есть ли способ получить ссылку на адресную книгу на iPhone пользователя, отфильтровать все контакты, которые не начинаются с буквы «А», а затем отобразить эту отфильтрованную адресную книгу?Это кажется возможным с UITableView, но есть ли специальный вид, который поставляется со всеми функциями адресной книги?

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Чтобы получить массив всех людей, чья фамилия начинается с A, вы должны использовать что-то вроде:

ABAddressBook *ab = [ABAddressBook sharedAddressBook];  
ABSearchElement *startsWithA =[ABPerson searchElementForProperty:kABLastNameProperty
                                 label:nil key:nil
                                 value:@"A"
                                 comparison:kABPrefixMatchCaseInsensitive];
NSArray *peopleFound =
    [ab recordsMatchingSearchElement:startsWithA];

Получив массив, вы можете использовать его в любом пользовательском представлении.

0 голосов
/ 30 июля 2011

В этом фрагменте кода предполагается, что FilterPeople является источником данных табличного представления, которое вы хотите заполнить всеми контактами адресной книги, имена которых начинаются с A.

Этот ответ также должен помочь вам: Пробелполе, отображаемое на iPhone AddressBook, как отлаживать?

Также в Apple есть подробные сведения о «Прямом взаимодействии: программный доступ к базе данных» в http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html%23//apple_ref/doc/uid/TP40007744-CH6-SW1

      ABAddressBookRef addressBook = ABAddressBookCreate();
    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
    CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(
                                                               kCFAllocatorDefault,
                                                               CFArrayGetCount(people),
                                                               people
                                                               );
    NSMutableArray *allNames = (NSMutableArray*)peopleMutable;



   filteredPeople = [[NSMutableArray alloc] init ];

    for (id person in allNames) {
        NSMutableString *firstName = [(NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) autorelease];

        if ([firstName length] > 0){
            NSString* firstChar = [firstName substringToIndex:1];

            if ([firstChar isEqualToString:@"A"] || [firstChar isEqualToString:@"a"]){

                [filteredPeople addObject:person];
            }
        }
    }

    [self.theTableView reloadData];



    CFRelease(addressBook);
    CFRelease(people);
    CFRelease(peopleMutable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...