Я работаю над интеграцией моего приложения с адресной книгой iPhone. Вот поток моей программы.
- Пользователь хочет импортировать контакт
- Приложение представляет пользователю «ABPeoplePickerNavigationController».
- Пользователь выбирает контакт, который ему нужен:
- Метод делегата называется:
Вот код:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
self.selectedContact = person;
[self showNewContactViewThroughController:peoplePicker withRecord:person];
NSLog(@"should continue after selecting");
return NO;
}
5: In - (void)showNewContactViewThroughController:withRecord:
Мы создаем AbNewPersonViewController.
`ABNewPersonViewController *newController = [[ABNewPersonViewController alloc] init];`
`newController.displayedPerson = person;`
`newController.newPersonViewDelegate = self;`
А затем нажмите его.
6: пользователь нажимает кнопку «Отмена», чтобы выйти из представления ABNewPersonViewController.
7. Проверьте приложение «Контакты». Контакт, выбранный на шаге 3, исчез. Пуф, пропал, удален, удален.
В попытке решить эту проблему я сохраняю ABRecordRef (в переменную экземпляра selectedContact). Тогда в - (void)newPersonViewController:didCompleteWithNewPerson:
у меня есть:
if (person) {
//do stuff with the person
else {
///
/// This means they canceled, so we need to save the old person back
///
if (self.selectedContact) {
ABAddressBookRef addressBook = ABAddressBookCreate();
CFErrorRef error = NULL;
ABAddressBookAddRecord(addressBook, self.selectedContact, &error);
if (error != NULL) {
NSLog(@"Error Adding Record: %@", error);
}
ABAddressBookSave(addressBook, &error);
if (error != NULL) {
NSLog(@"AccountDetailTableViewController.newPersonViewController() The old contact was not saved successfully. %@", error);
}
self.selectedContact = nil;
}
}
Однако, похоже, это ничего не делает. Код выполняется, но «Старый контакт», self.selectedContact, не сохраняется в адресной книге. Итак, мои контакты все еще исчезают. Что я делаю неправильно? Похоже, что если вы нажмете кнопку Отмена в ABNewPersonViewController, он «удалит» данные, которые он дал из адресной книги? Значит, человек, которому я это даю, умирает? Любая помощь будет оценена!