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オブジェクトの配列に追加するような場合です。