EOGenericRecordのインスタンスの生成

EOGenericRecordのインスタンスを生成する最適な方法は、EOClassDescriptionの createInstanceWithEditingContext メソッドを使うことです。

    EOEnterpriseObject newEO;
    String entityName;       // 存在すると仮定
    EOClassDescription description =
        ClassDescription.classDescriptionForEntityName(entityName);
    newEO = description.createInstanceWithEditingContext(null, null);

createInstanceWithEditingContext はコンストラクタを使うよりもいい方法です。 同じコードでも、エンタープライズオブジェクトのカスタムクラスがあれば、EOGenericRecordの代わりにそのクラスを使います。 エンティティ名に対応するEOClassDescriptionは上記の方法で取得できます。 もう一つ、エンタープライズオブジェクトのリレーション先のキーに対応するEOClassDescriptionは、次の方法で取得できます。

    EOEnterpriseObject newEO;
    EOEnterpriseObject existingEO;   // 存在すると仮定
    String relationshipName;         // 存在すると仮定
    EOClassDescription sourceDesc = existingEO.classDescription();
    EOClassDescription desc = 
        sourceDesc.classDescriptionForDestinationKey(relationshipName);
    newEO = desc.createInstanceWithEditingContext(null, null);

この方法はエンタープライズオブジェクトに新しいリレーション先のオブジェクトを追加するのにも有効です。 例えば、新しいMovieオブジェクトをStudioオブジェクトが保持するMovieオブジェクトの配列に追加するような場合です。