Идентификатор контакта возвращается с суффиксом ABPerson
Я добавляю контакт, используя Native CNContactViewController, и после сохранения контакта возвращает идентификатор контакта с суффиксом ":ABPerson", и при перекрестной проверке в списке контактов появляется тот же контакт с другим идентификатором.
Кто-нибудь знает, как получить фактический контактный идентификатор?
Код для создания:
- (IBAction)didSelectedAddContact:(id)sender {
CNMutableContact *contact = [CNMutableContact new];
CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact];
NSLog(@"contact id : %@", contact.identifier);
contactController.allowsEditing = true;
contactController.allowsActions = true;
contactController.delegate = self;
[self.navigationController pushViewController:contactController animated:YES];
}
Делегированный обратный вызов:
- (void)contactViewController:(CNContactViewController *)viewController didCompleteWithContact:(nullable CNContact *)contact{
_contact = contact;
[viewController.navigationController popViewControllerAnimated:YES];
}
Ниже функция возвращает ноль:
- (CNContact*) getContactFromStoreForIdentifier:(NSString*) identifier
{
CNContact *updatedContact = nil;
id descriptor = [CNContactViewController descriptorForRequiredKeys];
CNContactStore *store = [CNContactStore new];
NSError *error;
updatedContact = [store unifiedContactWithIdentifier:identifier
keysToFetch:@[descriptor]
error:&error];
// Found?
if (updatedContact == nil)
{
if (error != nil)
{
}
}
return updatedContact; }
@Parameter: идентификатор объекта CNContact, полученный от didCompleteWithContact: делегат обратного вызова.
1 ответ
Вы должны установить contactStore для viewController.
CNContactStore *store = [CNContactStore new];
contactController.contactStore = store;
Если не установлено это свойство, то добавление контакта в контакты пользователя отключено.
источник: https://developer.apple.com/reference/contactsui/cncontactviewcontroller/1616912-contactstore