2010-05-02 3 views
0

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

До сих пор мой единственный способ - разобрать все имена и цифры в Диктоне и прочитать его оттуда.

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

ответ

0

Непросто перекопать адресную книгу пользователя и создать номер телефона для сопоставления человека. Address Book Programming Guide излагает всю информацию о том, как работает каркас.

+0

я не могу видеть другую сторону тоже. но спасибо в любом случае –

0

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

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

Вам нужно выпустить 'vorname',' nachname', 'phones' и' tmpNumber', потому что все они созданы функцией, которая имеет 'Copy' в имени. Кроме того, вы явно пропускаете 'tmpNumber', потому что вы получаете ссылку на объект со значением сохранения +1, они сразу теряют ссылку, когда вы запускаете ее через' cleanupPhoneNumber: ' –

+0

youre right, thx –

Смежные вопросы