éviter CNContactPickerViewController pour afficher les emails

J'utilise le code ci-dessous pour afficher la list de contacts dans mon application:

self.contactPicker = [[CNContactPickerViewController alloc] init]; self.contactPicker.delegate = self; self.contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; [viewController presentViewController:self.contactPicker animated:YES completion:nil ]; 

La page affiche tous les contacts, y compris les courriels. Je veux seulement montrer des nombres (et aucun email) est là des options sur le NSPredicate ou le CNContactPickerViewController lui-même pour montrer seulement des nombres?

J'ai aussi utilisé:

  self.contactPicker.displayedPropertyKeys = @[@"phoneNumber"]; 

Mais ça ne marche pas aussi.

displayedPropertyKeys utilise cette propriété pour contrôler ce que tous les champs doivent être visibles.

Si vous souhaitez uniquement afficher les numéros de téléphone du contact lorsque vous select le contact, utilisez la propriété displayedPropertyKeys :

 self.contactPicker.displayedPropertyKeys = @[CNContactPhoneNumbersKey]; 

Mais si vous ne voulez même pas pouvoir sélectionner les contacts qui n'ont pas de numéros de téléphone, vous devez définir predicateForEnablingContact :

 self.contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"%K.@count > 0", CNContactPhoneNumbersKey]; 

Je remarque que vous utilisez self.contactPicker.predicateForSelectionOfContact . Mais que faire si la personne a plusieurs numéros de téléphone? Lequel allez-vous utiliser? Personnellement, je serais enclin à ne pas définir cette propriété du tout, ou si vous le souhaitez, peut-être permettre à l'user de percer et de choisir le numéro de téléphone désiré s'il y avait plusieurs numéros de téléphone:

 self.contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"%K.@count == 1", CNContactPhoneNumbersKey];