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