2015-03-12 1 views
3

С прошивкой 8 ABPeoplePickerNavigationController имеет:ABPeoplePickerNavigationController predicateForEnablingPerson - Каков формат предиката для уличного адреса?

// Optionally determines if a person can be selected or not. 
// If not set, all persons will be selectable. 
// 
@property(nonatomic,copy) NSPredicate *predicateForEnablingPerson NS_AVAILABLE_IOS(8_0); 

Я хотел бы отключить адресную книгу контактов, делать не имеют почтовый адрес.

Я видел (и испытания) следующее, что только позволяет контакты с по крайней мере один адрес электронной почты:

if ([peoplePickerNavigationController respondsToSelector:@selector(predicateForEnablingPerson)]) { 
     peoplePickerNavigationController.predicateForEnablingPerson = [NSPredicate predicateWithFormat:@"[email protected] > 0"]; 
    } 

Что я заменить строку "[email protected] > 0" с тем чтобы только контакты с по крайней мере, один уличный адрес?

ответ

4

Вы можете использовать:

controller.predicateForEnablingPerson = [NSPredicate predicateWithFormat:@"%[email protected] > 0", ABPersonPostalAddressesProperty]; 

Заголовок содержит список допустимых констант, которые будут использоваться в предикатах:

// Constants to use in predicates: 
// A LabeledValue has a 'label' property and a 'value' property. 
// A PhoneNumber has a 'stringValue' property, a 'countryCode' property, a 'formattedStringValue' property and a 'normalizedStringValue' property 
// A InstantMessageAddress has a 'username' property and a 'service' property 
// A SocialProfile has a 'username' property and a 'service' property 
// A PostalAddress has a 'street' property, a 'subLocality' property, a 'city' property, a 'subAdministrativeArea' property, a 'state' property, a 'postalCode' property, a 'country' property and a 'ISOCountryCode' property 
// 
extern NSString * const ABPersonNamePrefixProperty NS_AVAILABLE_IOS(8_0);    // "namePrefix"     NSString 
extern NSString * const ABPersonGivenNameProperty NS_AVAILABLE_IOS(8_0);    // "givenName"     NSString 
extern NSString * const ABPersonMiddleNameProperty NS_AVAILABLE_IOS(8_0);    // "middleName"     NSString 
extern NSString * const ABPersonFamilyNameProperty NS_AVAILABLE_IOS(8_0);    // "familyName"     NSString 
extern NSString * const ABPersonNameSuffixProperty NS_AVAILABLE_IOS(8_0);    // "nameSuffix"     NSString 
extern NSString * const ABPersonPreviousFamilyNameProperty NS_AVAILABLE_IOS(8_0);  // "previousFamilyName"   NSString 
extern NSString * const ABPersonNicknameProperty NS_AVAILABLE_IOS(8_0);     // "nickname"     NSString 
extern NSString * const ABPersonPhoneticGivenNameProperty NS_AVAILABLE_IOS(8_0);  // "phoneticGivenName"   NSString 
extern NSString * const ABPersonPhoneticMiddleNameProperty NS_AVAILABLE_IOS(8_0);  // "phoneticMiddleName"   NSString 
extern NSString * const ABPersonPhoneticFamilyNameProperty NS_AVAILABLE_IOS(8_0);  // "phoneticFamilyName"   NSString 
extern NSString * const ABPersonOrganizationNameProperty NS_AVAILABLE_IOS(8_0);   // "organizationName"   NSString 
extern NSString * const ABPersonDepartmentNameProperty NS_AVAILABLE_IOS(8_0);   // "departmentName"    NSString 
extern NSString * const ABPersonJobTitleProperty NS_AVAILABLE_IOS(8_0);     // "jobTitle"     NSString 
extern NSString * const ABPersonBirthdayProperty NS_AVAILABLE_IOS(8_0);     // "birthday"     NSDateComponents 
extern NSString * const ABPersonNoteProperty NS_AVAILABLE_IOS(8_0);      // "note"      NSString 
extern NSString * const ABPersonPhoneNumbersProperty NS_AVAILABLE_IOS(8_0);    // "phoneNumbers"    array of LabeledValue with PhoneNumber values 
extern NSString * const ABPersonEmailAddressesProperty NS_AVAILABLE_IOS(8_0);   // "emailAddresses"    array of LabeledValue with NSString values 
extern NSString * const ABPersonUrlAddressesProperty NS_AVAILABLE_IOS(8_0);    // "urlAddresses"    array of LabeledValue with NSString values 
extern NSString * const ABPersonDatesProperty NS_AVAILABLE_IOS(8_0);     // "dates"      array of LabeledValue with NSDateComponents values 
extern NSString * const ABPersonInstantMessageAddressesProperty NS_AVAILABLE_IOS(8_0); // "instantMessageAddresses" array of LabeledValue with InstantMessageAddress values 
extern NSString * const ABPersonRelatedNamesProperty NS_AVAILABLE_IOS(8_0);    // "relatedNames"    array of LabeledValue with NSString values 
extern NSString * const ABPersonSocialProfilesProperty NS_AVAILABLE_IOS(8_0);   // "socialProfiles"    array of LabeledValue with SocialProfile values 
extern NSString * const ABPersonPostalAddressesProperty NS_AVAILABLE_IOS(8_0);   // "postalAddresses"   array of LabeledValue with PostalAddress values 

Если вы посмотрите на заголовок, это postalAddresses

+0

Спасибо , Просто для дополнительной информации, которая могла бы помочь другим, я искал заголовок 'ABPerson.h'. Эти строки в ответе выше содержатся в 'ABPeoplePaverNavigationController.h' - и, как следует из ответа, они перечислены как константы' 'для использования в предикатах ''. –