2016-09-26 43 views
0

我用下面的代碼顯示在我的應用程序的聯繫人列表:避免CNContactPickerViewController顯示電子郵件

self.contactPicker = [[CNContactPickerViewController alloc] init]; 
    self.contactPicker.delegate = self; 
    self.contactPicker.predicateForSelectionOfContact = 
    [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; 

    [viewController presentViewController:self.contactPicker 
           animated:YES 
           completion:nil 
    ]; 

頁面顯示所有聯繫人包括電子郵件。我只想顯示數字(並且沒有電子郵件)NSPredicateCNContactPickerViewController本身上是否有任何選項僅顯示數字?

我也用過:

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

但它不是工作壓力太大。

回答

2

displayedPropertyKeys使用此屬性來控制所有字段應該可見。

+0

請參閱我的編輯 –

+0

它應該是'self.contactPicker.displayedPropertyKeys = @ [@「phoneNumbers」];'。它應該堅持在'CNContact' –

+0

中聲明的密鑰,我用「phoneNumbers」替換了「phonenumber」,但它仍然會顯示電子郵件 –

0

如果你只想顯示聯繫人的電話號碼,當你選擇聯繫人,使用displayedPropertyKeys屬性:

self.contactPicker.displayedPropertyKeys = @[CNContactPhoneNumbersKey]; 

但是,如果你不想甚至可以選擇那些聯繫人誰不「T有電話號碼,你要設置predicateForEnablingContact

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

我注意到你正在使用self.contactPicker.predicateForSelectionOfContact。但是如果這個人有多個電話號碼呢?你打算使用哪一個?就個人而言,我傾向於不設置該屬性可言,或者如果你想,或許允許用戶鑽,然後選擇所需的電話號碼,如果有多個電話號碼:

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