Edit Diff Annotate History
Upload
List
Recent
Alias
Top
Help
EOMappingMethods : Edit
Last updated: Fri Mar 30 22:07:46 +0900 2007
EOFはフェッチ時と保存時にデータベースとオブジェクトの変換作業を行います。 主なデータ変換の処理はEOAttributeとアダプタ間で行われます。 EOFでは規定のクラス(String, Nubmer, NSData, NSTimestampなど)以外のカスタムクラスにもマッピングできますが、ここではまず基本的なデータ変換の流れについて整理します。 以下にデータ変換で使われる主なメソッドをまとめました。 メソッドが多くて複雑なので、具体的な処理と照らし合わせながら読んでください。 :EOAttribute.valueClassName:オブジェクトのクラス名。 クラス名はNSString, NSNumber, NSDecimalNumber, NSData, NSCalendarDateかカスタムクラスになるが、実際にフェッチしたデータはString, Number, BigDecimal, NSData, NSTimestampかカスタムクラスに変換される。 NSNumberやNSCalendarDateなどのクラスはObjective-C版の名残。 :EOAttribute.valueType:オブジェクトのデータ型。 valueClassNameがNSNumberかカスタムクラスの場合に使われる。 例えばフェッチした数字をNumberクラスに変換するとき、int型やdouble型を判断するのに使う。 内容は"i"や"l"などの文字だが、これはObjective-Cでデータ型を判別するのに使われていたもの。 :EOAttribute.externalType:varcharやshortなどの、データベース上のデータ型。 データベースによって値が異なる。 :EOAttribute.adaptorValueType:アダプタが扱うデータの種類。 定数であるAdaptorNumberType, AdaptorCharactersType, AdaptorBytesType, AdaptorDateTypeのいずれか。 :EOAttribute.adaptorValueByConvertingAttributeValue:カスタムデータをアダプタが扱えるデータに変換する。 adaptorValueTypeの値に従って、String, Number, NSData, NSTimestampのどれかに変換する。 もしこれらの基本的なデータを与えても何もしない。 :EOAttribute.newValueForBytes:フェッチした生データをNSDataかカスタムクラスに変換する。 :EOAttribute.newValueForString:フェッチした生データ(文字列)を文字列かカスタムクラスに変換する。 :EOAdaptorChannel.evaluateExpression:SQLを実行する。 実行時にカスタムデータをバイナリか文字列に変換する。 :EOAdaptorChannel.fetchRow:フェッチしたデータ行を1行返す。 :EOSQLExpression.formatValueForAttribute:EOAttributeの設定に従って、SQL文に埋め込むためにデータを変換する。 どのデータ型に変換されるかはexternalTypeによる。 EOQualifierをWHERE句に変換するのに使われるらしい(が、属性に合わせてStringやInteger渡してもNULLしか返ってこないんだけど…)。