Ios 当predicateForSelectionOfContact导致选择联系人时,如何使委托在CNContactPickerViewController()上激发

Ios 当predicateForSelectionOfContact导致选择联系人时,如何使委托在CNContactPickerViewController()上激发,ios,objective-c,nspredicate,contacts,Ios,Objective C,Nspredicate,Contacts,我正在尝试使用iOS9中的联系人API将电话选择添加到iOS应用程序。它应该调用CNContactsPickerViewController,让用户只选择至少有一个相关电话号码的联系人 如果有多个电话号码,则应提示用户选择哪一个 如果只有一个联系人,只需从初始列表中选择联系人即可选择该联系人 这种行为几乎是正确的。我不允许选择没有电话号码的联系人。如果我选择了一个有多部电话的联系人,系统会提示我选择一部,然后会呼叫该代表。如果我选择一个有一个电话号码的联系人,它会返回,但不会呼叫任何代表 我怀疑

我正在尝试使用iOS9中的联系人API将电话选择添加到iOS应用程序。它应该调用
CNContactsPickerViewController
,让用户只选择至少有一个相关电话号码的联系人

如果有多个电话号码,则应提示用户选择哪一个

如果只有一个联系人,只需从初始列表中选择联系人即可选择该联系人

这种行为几乎是正确的。我不允许选择没有电话号码的联系人。如果我选择了一个有多部电话的联系人,系统会提示我选择一部,然后会呼叫该代表。如果我选择一个有一个电话号码的联系人,它会返回,但不会呼叫任何代表

我怀疑我需要为
predicateForSelectionOfProperty
添加一个
NSPredicate
,但我找不到任何对
CNContactProperty
有效的格式查询。如果是,那么
predicateForSelectionOfProperty
的适当谓词是什么?如果不是,我缺少什么

- (void)initiateIdSelectionViaContacts
{
    CNContactPickerViewController *picker = [[CNContactPickerViewController alloc] init];
    NSArray *propertyKeys = @[CNContactPhoneNumbersKey, CNContactGivenNameKey, CNContactFamilyNameKey, CNContactOrganizationNameKey];
    NSPredicate *enablePredicate = [NSPredicate predicateWithFormat:@"(phoneNumbers.@count > 0)"];
    NSPredicate *contactSelectionPredicate = [NSPredicate predicateWithFormat:@"phoneNumbers.@count == 1"];

    picker.displayedPropertyKeys = propertyKeys;
    picker.predicateForEnablingContact = enablePredicate;
    picker.predicateForSelectionOfContact = contactSelectionPredicate;
    picker.delegate = self;

    [self presentViewController:picker animated:YES completion:nil];
}

- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact
{
}

- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
}