項目トークンの使用
項目のトークンにアクセスするには、次のいずれかのメソッドを使用します。
- sObject 静的データ型の静的メンバー変数名、たとえば Account.Name にアクセスします。
- Field Describe Result の getSObjectField メソッドをコールします。
項目トークンは、データ型 Schema.SObjectField を使用します。
次の例では、項目トークンは Account オブジェクトの Description 項目に返されます。
次の例では、項目トークンは Field Describe Result から返されます。
Field Describe Result の使用
Field Describe Result にアクセスするには、次のいずれかのメソッドを使用します。
- 項目トークンの getDescribe メソッドをコールします。
- sObject トークンの fields メンバー変数に、項目メンバー変数 (Name、BillingCity など) を使用してアクセスします。
Field Describe Result は、データ型 Schema.DescribeFieldResult を使用します。
次の例では、getDescribe メソッドを使用します。
次の例では、次の fields メンバー変数メソッドを使用します。
上記の例では、システムは、コンパイル時に最終メンバー変数 (Name) が指定の sObject に対して有効であることを検証する特殊な解析を使用します。パーサーが fields メンバー変数を見つけたら、sObject (Account) の名前を逆方向に検索して、fields メンバー変数の後の項目名が正当であるかどうかを検証します。fields メンバー変数は、この方式が使用された場合にのみ機能します。
Field Describe Result で使用できるメソッドについての詳細は、「DescribeFieldResult クラス」を参照してください。
sObject のすべての Field Describe Result へのアクセス
Field Describe Result の getMap メソッドを使用して、sObject のすべての項目名 (キー) と項目トークン (値) 間のリレーションを表す対応付けを返します。
次の例では、項目に名前でアクセスするときに使用できる対応付けを生成します。
対応付けには次の特性があります。
- 動的である。つまり、sObject の項目で実行時に生成されます。
- すべての項目名は大文字と小文字を区別しない。
- キーは、必要に応じて名前空間を使用する。
- キーは、項目がカスタムオブジェクトかどうかを反映する。
Field Describe の考慮事項
項目を記述するときに、次の点に注意してください。
- インストールされた管理パッケージ内で Field Describe を実行した場合、インストール先の組織で Chatter が有効になっていなくても、Chatter 項目が返されます。インストールされた管理パッケージ内にないクラスから Field Describe を実行した場合は、Chatter 項目は返されません。
- Apex クラス内から sObject とその項目を記述する場合、クラスが保存されている API バージョンに関係なく、新しいデータ型のカスタム項目が返されます。地理位置情報データ型などのデータ型が最新の API バージョンのみで使用できる場合、クラスが以前のバージョンの API で保存されていても、地理位置情報項目のコンポーネントが返されます。
バージョン管理動作の変更
API バージョン 34.0 以降の場合、カスタム SObjectType の Schema.DescribeSObjectResult に含まれる対応付けのキーには、名前空間がプレフィックスとして付加されています。これは、その名前空間が現在実行中のコードの名前空間であっても当てはまります。複数の名前空間を操作し、ランタイム describe データを生成する場合、名前空間プレフィックスを使用してコードで正しくキーにアクセスするようにします。