首页 > 解决方案 > 使用 sObject 动态更改字段值

问题描述

我正在尝试使用sObject跨组织动态更改名称字段对象。

我试过使用SomeId.getSObjectType().newSObject(SomeId)创建 sObject,但是当我尝试更改名称字段时出现错误

变量不存在:名称

Map<Id, string> idsToUpdate = new Map<Id, string>();

// Put the Id's and associated name values in the map

List<SObject> sObjectsToUpdate = new List<SObject>();

foreach(Id idToUpdate : idsToUpdate.keySet) {
    SObject o1 = idToUpdate.getSObjectType().newSObject(idToUpdate);
    o1.Name = idsToUpdate.get(idToUpdate);
    sObjectsToUpdate.add(o1);
}

update sObjectsToUpdate;

正如我看到的其他帖子,这是创建对象动态更新的方式。

知道为什么会这样吗?

标签: salesforceapex

解决方案


并非所有对象都有名称字段,您应该在尝试设置字段之前检查名称字段是否存在,您还必须使用 put 方法

Map <String, Schema.SObjectField> fieldMap = o1.getSobjectType().getDescribe().fields.getMap();
if(fieldMap.containsKey('Name')){
    o1.put('Name', 'Test');
}

推荐阅读