2013-11-25 3 views
0

Я разрабатываю приложение в iOS. Я могу получить имя и фамилию, но я хочу, как я могу получить информацию о мобильном номере. У меня уже есть этот код для извлечения имени и фамилии.Fetch мобильный номер программно

CFErrorRef error = NULL; 
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error); 

if (addressBook != nil) { 
    NSLog(@"Succesful."); 


    NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); 


    NSUInteger i = 0; for (i = 0; i < [allContacts count]; i++) 
    { 

     ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i]; 


     firstName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson,kABPersonFirstNameProperty); 
     lastName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty); 


     fullName = [NSString stringWithFormat:@"%@ %@", firstName, lastName]; 


} else { 

    NSLog(@"Error Reading Address Book"); 
} 

ответ

3

Вы можете получить все записи телефона, используя следующий код. Я также указал несколько типов телефонов, чтобы дать вам представление о том, как с этим бороться.

ABMultiValueRef phoneNumbers = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty); 

for (CFIndex i=0; i < ABMultiValueGetCount(phoneNumbers); i++) 
{ 
    NSString* phoneLabel = (NSString*)ABMultiValueCopyLabelAtIndex(phoneNumbers, i); 
    NSString* phoneNumber = ABMultiValueCopyValueAtIndex(phoneNumbers, i); 

    if([phoneLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel]) 
    { 

    } 
    else if([phoneLabel isEqualToString:(NSString *)kABPersonPhoneIPhoneLabel]) 
    { 

    } 

    CFRelease(phoneNumber); 
    CFRelease(phoneLabel); 
} 

CFRelease(phoneNumbers); 
+1

Это рабочий код :) Так что ответ ... –

+0

"Рабочий код" не делает сделайте сообщение ответ. –

+1

Как это не ответ? : D lol –

0

Вы можете получить телефонные номера, используя ниже код

ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty); 
0

Попробуйте

ABAddressBookRef addressBook = ABAddressBookCreate(); 

    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 

    CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); 
    for(int i = 0; i < nPeople; i++) 
    { 
     // Getting the person record ... 
     ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i); 
     ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty); 

     for (CFIndex i=0; i < ABMultiValueGetCount(phones); i++) 
     { 
      NSString* phoneLabel = (__bridge_transfer NSString*)ABMultiValueCopyLabelAtIndex(phones, i); 
      NSString* phoneNumber = (__bridge_transfer NSString*) ABMultiValueCopyValueAtIndex(phones, i); 

     } 
     CFRelease(phones); 
    } 
    CFRelease(allPeople); 
    CFRelease(addressBook); 
+0

@GrzegorzKrukowski Это не копия кода. Его реализация шахт. –

+0

Вы действительно забыли скопировать много CFReleases, которые создадут много утечек. Я не могу создать такую ​​реализацию :) –

+1

@GrzegorzKrukowski вы можете проверить обновленный ответ. –

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