J'ajoute le contact en utilisant CNContactViewController natif et une fois le contact sauvegardé, il renvoie l'identifiant du contact avec le suffixe ': ABPerson' et quand je passe la liste de contact, le même contact apparaît avec un identifiant différent.Renvoie l'identificateur de contact avec le suffixe ABPerson
Est-ce que quelqu'un sait comment obtenir un identifiant de contact réel?
code pour créer:
- (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];
}
Délégué Callback:
- (void)contactViewController:(CNContactViewController *)viewController didCompleteWithContact:(nullable CNContact *)contact{
_contact = contact;
[viewController.navigationController popViewControllerAnimated:YES];
}
Ci-dessous fonction retourne NIL:
- (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: Identifiant d'objet CNContact reçu de didCompleteWithContact: déléguer rappel .
pourriez-vous partager le code où vous créez la 'CNContactViewController' et mettre en œuvre les méthodes de délégués. –
@JonRose a mis à jour ma question. –