In Interview question part 4, we discussed how dynamic Apex can be used to retrieve metadata information about Objects or fields on Object.
While writing highly configurable code, there are situation where we want to avoid hardcoding picklist values and read it realtime from field.
Below code snippet takes two parameter, Object and picklist field name. On basis of these two inputs, we can read either Picklist label or Picklist value (API Name)
String objectName = 'Contact';
String fieldName ='LeadSource';
Schema.SObjectType s = Schema.getGlobalDescribe().get(objectName) ;
Schema.DescribeSObjectResult r = s.getDescribe() ;
Map<String,Schema.SObjectField> fields = r.fields.getMap() ;
Schema.DescribeFieldResult fieldResult = fields.get(fieldName).getDescribe();
List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
for( Schema.PicklistEntry pickListVal : ple){
System.debug(pickListVal.getLabel() +' '+pickListVal.getValue());
}
Leave a Reply