EOIFFetchRecords
2007/03/30 (Fri) 22:07:46 JST
データ行のフェッチ
SQL文の実行後は、 EODatabaseChannel.fetchObject() によってフェッチしたオブジェクトを1行ずつ取り出します。 以降、 fetchObject() 内の処理になります。
?EODatabaseChannelはSQL文を組み立てますが、そのSQL文を評価するのは?EOAdaptorChannelです。 フェッチしたデータ行は EOAdaptorChannel.fetchRow() で1行ずつ取り出します。 このとき fetchRow() が返すのは、素のデータ行です。つまり、 EODatabaseChannel.fetchObject() は EOAdaptorChannel.fetchRow() が返すデータ行をオブジェクトに変換して返します。
それでは?EOAdaptorChannelが返すデータ行を見てみましょう。 基本的にオブジェクトを toString() で表示したものですが、クラス名の表示を簡略化してあります。
{
RATED = "G";
DATE_RELEASED = 1996-01-24 20:00:00 Etc/GMT;
STUDIO_ID = 52;
TRAILER_NAME = <NSKeyValueCoding$Null>; // null
TITLE = "EOF Next Generation";
MOVIE_ID = 205;
REVENUE = 600000;
POSTER_NAME = <NSKeyValueCoding$Null>
CATEGORY = "Surreal";
}
?EOAdaptorChannelが返すオブジェクトは?NSMutableDictionaryのインスタンスです。 単純に列名と値からなる辞書が返されますが、値はこの段階で基本的なデータ型(String, Number, NSData, NSTimestamp)に変換されます。
Inverse Pages: フェッチの舞台裏