Получить имя по номеру телефона на iPhone - PullRequest
0 голосов
/ 02 мая 2010

Я использую TextField, где пользователь вводит номер телефона. Когда TextField изменяется, он должен проверить, есть ли этот номер в телефонной книге, и отобразить имя.

Пока что мой единственный способ - проанализировать все имена и числа в Dict и прочитать их оттуда.

Есть ли более простой, эффективный и изощренный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 02 мая 2010

Чтобы закрыть и завершить эту проблему, вот основная часть моего решения:

ABAddressBookRef m_addressbook = ABAddressBookCreate();
if (!m_addressbook) {
    NSLog(@"opening address book");
}

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);

[.....]

adressList = [[NSMutableDictionary alloc] init];

for (int i=0;i < nPeople;i++) { 
    ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);

    vorname = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
    nachname = ABRecordCopyValue(ref, kABPersonLastNameProperty);
    nameTag = [NSString stringWithFormat:@"%@ %@.", vorname, nachname];

    ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty);

    // Loop thru all numbers of a person

    for(CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) {
        tmpNumber = (NSString*)ABMultiValueCopyValueAtIndex(phones, i);
        tmpNumber = [self cleanupPhoneNumber:tmpNumber];
        [adressList setObject: nameTag forKey:tmpNumber];
        NSLog(@"Name: %@ | Phone: %@", nameTag, tmpNumber);
    }
}
0 голосов
/ 02 мая 2010

Нетрудно пролистать адресную книгу пользователя и создать телефонный номер для сопоставления человека. Руководство по программированию адресной книги содержит всю информацию о том, как работает структура.

...