我使用下面的代码在我的应用程序中显示联系人列表:
self.contactPicker = [[CNContactPickerViewController alloc] init];
self.contactPicker.delegate = self;
self.contactPicker.predicateForSelectionOfContact =
[NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
[viewController presentViewController:self.contactPicker
animated:YES
completion:nil
];
该页面显示所有联系人,包括电子邮件。我想只显示数字(而且没有电子邮件)NSPredicate
或CNContactPickerViewController
本身是否有任何选项只显示数字?
我也用过:
self.contactPicker.displayedPropertyKeys = @[@"phoneNumber"];
但它也不起作用。
答案 0 :(得分:2)
displayedPropertyKeys
使用此属性来控制所有字段应该可见的内容。
答案 1 :(得分:0)
如果您只想在选择联系人时显示联系人的电话号码,请使用displayedPropertyKeys
属性:
self.contactPicker.displayedPropertyKeys = @[CNContactPhoneNumbersKey];
但如果您甚至不想选择那些没有电话号码的联系人,您需要设置predicateForEnablingContact
:
self.contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"%K.@count > 0", CNContactPhoneNumbersKey];
我注意到您正在使用self.contactPicker.predicateForSelectionOfContact
。但如果这个人有多个电话号码怎么办?你打算用哪一个?就个人而言,我倾向于根本不设置该属性,或者如果您愿意,或许允许用户钻取并选择所需的电话号码(如果有多个电话号码):
self.contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"%K.@count == 1", CNContactPhoneNumbersKey];