Чтобы позволить пользователю редактировать свои данные напрямую, см. Документация Apple по отображению и редактированию записи человека . В начальном разделе этого сказано: «Установите делегата, который должен принять протокол ABPersonViewControllerDelegate. Чтобы позволить пользователю редактировать запись, установите для allowEditing значение YES».
Например:
ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
personViewController.personViewDelegate = self;
personViewController.allowsEditing = YES;
За исключением настройки, позволяющей редактировать, код будет точно таким же, как и для отображения информации о человеке без редактирования. (Этот код был взят из этого ответа , который отображает более полный пример удаления контакта из адресной книги.)
Однако я вижу, что ваше название относится к этому программно. В руководстве Apple по программированию для адресной книги для iOS говорится: «Помните, что база данных адресной книги в конечном итоге принадлежит пользователю, поэтому приложения должны быть осторожны, чтобы не вносить в нее неожиданные изменения. Как правило, изменения следует инициировать или подтверждать». пользователем. "
Однако это возможно. Следующий пример приведен на стр.17 этого документа:
ABRecordRef aRecord = ABPersonCreate();
CFErrorRef anError = NULL;
bool didSet;
didSet = ABRecordSetValue(aRecord, kABPersonFirstNameProperty, CFSTR("Katie"), &anError);
if (!didSet) {/* Handle error here. */}
didSet = ABRecordSetValue(aRecord, kABPersonLastNameProperty, CFSTR("Bell"), &anError);
if (!didSet) {/* Handle error here. */}
CFStringRef firstName, lastName;
firstName = ABRecordCopyValue(aRecord, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(aRecord, kABPersonLastNameProperty);
/* ... Do something with firstName and lastName. ... */
CFRelease(aRecord);
CFRelease(firstName);
CFRelease(lastName);