0

Я использовал ABPeople Picker, чтобы отображать Контакты, а затем импортировать выбранный контакт в мое приложение.CNContact Пример извлечения и импорта контакта в приложение

Необходимо перенестись в CNContact как AB стало ненадежным.

Я нашел несколько примеров, но все они в Swift. В частности, нужна помощь ObjectiveC с CNContactPickerViewController.

Текущий код выглядит следующим образом:

-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person 
{ 
    CFTypeRef generalCFObject = ABRecordCopyValue(person, kABPersonFirstNameProperty); 

    if (generalCFObject) { 
     self.first = (__bridge_transfer NSString*)ABRecordCopyValue(person,kABPersonFirstNameProperty); 

     NSLog (@"First Name %@",first); 
    } 
} 

ответ

1

Вы можете сделать это с помощью следующего кода:

-(void)selectContactData { 

    CNContactPickerViewController * picker = [[CNContactPickerViewController alloc] init]; 

    picker.delegate = self; 
    picker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey; 

    [self presentViewController:picker animated:YES completion:nil]; 

} 

-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact { 

    [self dismissViewControllerAnimated:YES completion:nil]; 
    NSString *test = contact.givenName; 
    NSLog(@"%@",test); 

} 

Отображаемые Ключи свойств может быть что угодно, как CNContactEmailAddressesKey для электронной почты. и т. д.

для выбора нескольких контактов используют contactPicker:didSelectContacts: вместо contactPicker:didSelectContact: в вышеуказанном коде