2015-07-08 3 views
0

Я набрал приведенный ниже код для выбора контактов из адресной книги.Контакты из адресной книги не поступают

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL); 
NSArray *people = (__bridge NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); 
for(id person in people){ 
    //fetch multiple phone nos. 
    ABMultiValueRef multi = ABRecordCopyValue((__bridge ABRecordRef)(person), kABPersonPhoneProperty); 
    for (CFIndex j=0; j < ABMultiValueGetCount(multi); j++) { 
     NSString* phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(multi, j); 
     [_devices addObject:phone]; 

    } 
} 

Но в _devices объекта не добавляющий из телефона. Может ли кто-нибудь дать мне представление, где я ошибаюсь.

+0

У Вас есть разрешение от пользователя, чтобы получить доступ к адресной книге? – Droppy

+0

Возможный дубликат [ABAddressBookCopyArrayOfAllPeople возвращает пустой массив на устройстве] (http://stackoverflow.com/questions/16565645/abaddressbookcopcopyarrayofallpeople-returns-empty-array-on-device) – Larme

+0

Да У меня есть @Droppy. – iPeter

ответ

0

попробовать этот код:

ABAddressBookRef address = ABAddressBookCreate(); 
CFArrayRef People = ABAddressBookCopyArrayOfAllPeople(address); 
CFIndex contact = ABAddressBookGetPersonCount(address); 

for (int j = 0; j < contact; j++) 
{ 
    ABRecordRef ref = CFArrayGetValueAtIndex(People, j); 
} 
+0

этот код для вас работает? @ipeter –

0

Пожалуйста, попробуйте этот код

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    phoneArray =[[NSMutableArray alloc]init]; 
    ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) 
    { 
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) 
    { 
     if (granted) 
     { 
      [self getPhoneList]; 
     } 
    }); 
    } 
    else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) 
    { 
     [self getPhoneList]; 
    } 
} 
-(void)getPhoneList 
{ 
    [phoneArray removeAllObjects]; 

    ABAddressBookRef addressBook=ABAddressBookCreateWithOptions(NULL, NULL); 
    int count = (int)ABAddressBookGetPersonCount(addressBook); 

    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 

    for(int i = 0;i<count;i++) 
    { 
     ABRecordRef ref = CFArrayGetValueAtIndex(people, i); 
     ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty); 
    for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++) 
    { 
     CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j); 
     NSString *phoneNumber = (NSString *)phoneNumberRef; 

     phoneNumber=[phoneNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; 
     phoneNumber=[phoneNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
     phoneNumber=[phoneNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; 
     phoneNumber=[phoneNumber stringByReplacingOccurrencesOfString:@") " withString:@""]; 
     phoneNumber=[phoneNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; 
     phoneNumber=[phoneNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; 
     [phoneArray addObject:phoneNumber]; 
    } 
} 
Смежные вопросы