Edit Diff Annotate History
Upload
List
Recent
Alias
Top
Help
EOMappingSaving : Edit
Last updated: Fri Mar 30 22:07:46 +0900 2007
保存時は「オブジェクトを生データに変換する」というフェッチ時と逆の処理を行います。 オブジェクト(カスタムクラスのものを含む)はSQL文を評価するとき、 =EOAdaptorChannel.evaluateExpression= でバイナリか文字列のデータに変換されます。 このメソッドは =EOAttribute.adaptorValueByConvertingAttributeValue= でデータを変換します。 もしデータが基本的なクラスであれば何もしませんが、カスタムクラスであればユーザが指定したメソッドを使ってデータを変換します。 このとき、 =evaluateExpression= にはすでに組み立てられたSQL文(EOSQLExpression)が渡されます。 なぜSQL文が出来上がった後にデータを変換するのかというと、EOSQLExpressionではバインド変数が利用されているからでしょう。 つまりこの時点のEOSQLExpressionはSQLコマンドを組み立てているだけで、おそらくバインドされている変数はカスタムデータのままです(※検証してません)。 EOSQLExpressionのバインド変数はNSMutableDictionaryで管理されていますから、他のオブジェクトからでも自由に変更できます。 EOAdaptorChannelはカスタムデータを基本データに変換したら、SQL文を実行します。 図:保存時のデータ変換 <<converting_at_saving.png>>