创建一个将List<SObject>转换为Map<SObjectField, SObject>的方法,并使用SObjectField作为方法参数,有什么建议吗?

问题描述 投票:0回答:2
global with sharing class test1 {
global Map<SObjectField, SObject> ConvertMap(List<SObject> listToConvert){
    List<SObject> listToConvert = new List<SObject>;
    Map<SObjectField, SObject> mapTest = new Map<SObjectField, SObject>;
    mapTest.putAll(listToConvert);
    return mapTest;
}

我已经编写了这段代码,但它不尊重请求,因为我无法将 SObjectField 作为方法参数,因为 Map 无法识别该变量。 有人对如何做有建议吗? 预先感谢您。

salesforce apex apex-code
2个回答
1
投票

你真的需要

SobjectField
作为地图键吗?特殊班级?如果您同意字符串作为键,那么有一个内置的,
getPopulatedFieldsAsMap()

如果你绝对需要SobjectField(我什至不知道它是否可序列化并且可以传递给集成、LWC等)...你必须循环并将结果与类似的东西结合起来

Schema.describeSObjects(new List<String>{'Account'})[0].fields.getMap()


0
投票

要创建 sObject 字段的映射,您首先需要创建该对象的所有字段的映射 例如你想要一张像

这样的地图
Map<SObjectField, String> registrationAttributes=  new Map<SObjectField, String> ();

为此

// Get a map of all of the fields on the 'User' object
Map<String, Schema.SObjectField> fMap = Schema.getGlobalDescribe().get('User').getDescribe().Fields.getMap();
// Get details from the field
Schema.SObjectField FirstName = fMap.get('FirstName');

registrationAttributes.put(FirstName, 'Abhinav');
  for (SObjectField field : registrationAttributes.keySet()) {
                String value = registrationAttributes.get(field);
                system.debug('field ==> '+ field);
                system.debug('value ==> '+ value);
 }
© www.soinside.com 2019 - 2024. All rights reserved.