Как загрузить все контакты в массиве ios9

AddressBook API устарел в IOS 9. Я хочу загрузить все контакты в массиве и отобразить его в UITableView, Я не хочу использовать iOS по умолчанию ContactPicker как я должен сделать некоторые настройки при отображении. Как загрузить весь список контактов в массив для дальнейшего использования?

1 ответ

Сначала я должен был проверить идентификатор разрешения, который не определен, а затем запросить разрешение на доступ к контактам. Как это:

CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];

if (status == CNAuthorizationStatusNotDetermined) {
    [self.contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError *error) {

        if (granted) {
            [self loadUserListFromPhoneBook];
        }
    }];
}
else if(status == CNAuthorizationStatusAuthorized) {
    [self loadUserListFromPhoneBook];
}

После этого мне пришлось перебрать список контактов и загрузить все контакты следующим образом:

-(void) loadUserListFromPhoneBookFor
{
    NSMutableArray *contacts = [NSMutableArray array];
    NSError *error;
    CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactIdentifierKey, [CNContactFormatter descriptorForRequiredKeysForStyle:CNContactFormatterStyleFullName]]];

    BOOL success = [self.contactStore enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact *contact, BOOL *stop) {
        [contacts addObject:contact];
    }];
    if (!success) {
        NSLog(@"error = %@", error);
    }

    CNContactFormatter *formatter = [[CNContactFormatter alloc] init];

    for (CNContact *contact in contacts) {
        NSString *string = [formatter stringFromContact:contact];
        NSLog(@"contact = %@", string);
    }
}

Вы можете использовать необходимые ключи для получения дополнительной информации. Посмотрите на это для получения дополнительной информации. У него есть все новые классы контактов. Это видео WWDC очень помогло.

Другие вопросы по тегам