Powered by SmartDoc

EditingContext

データに関する主な操作(フェッチ、更新、追加、削除)はすべてEditingContextを使って行います。EditingContextはデータベースオブジェクトのバッファであり、オブジェクトの状態を管理します。また、EditingContextはTapKitで最も重要なクラスでもあります。

データベースからデータをフェッチするとデータベースオブジェクトの配列が返されますが、このときのオブジェクトはEditingContextが管理します。オブジェクトに変更を加えるとEditingContextに記録され、保存時に新規オブジェクトや削除するオブジェクトとまとめてデータベースに書き出されます。

EditingContextを生成するにはApplication#create_editing_context()を使います。EdtingiContextはいくつでも生成することができますが、異なるEditingContextを使ってフェッチしたオブジェクトは管理しません。つまり、1つのEditingContextで二度同じデータをフェッチしてもオブジェクトは1つしか存在しませんが、異なるEditingContextでフェッチしたオブジェクトは2つ以上生成されることになります。この場合、例え同じデータを持つオブジェクト同士を比較しても同一とはみなされないので注意してください。

以下の表はEditingContextで使用する主なメソッドです。

EditingContextの主なメソッド
メソッド 説明
fetch(fetchspec) データをフェッチし、データベースオブジェクトの配列を返す。
insert(object) 新しく追加するオブジェクトを登録する。deleteされたオブジェクトを登録すると相殺される。
delete(object) 削除するオブジェクトを登録する。insertされたオブジェクトを登録すると相殺される。
save 登録されたオブジェクトをデータベースに保存する。
changed? オブジェクトの変更や、insert/deleteの登録があれば真を返す。
inserted_objects 追加待ちのオブジェクトを配列で返す。
deleted_objects 削除待ちのオブジェクトを配列で返す。
updated_objects 変更されたオブジェクトを配列で返す。
create(name) 新しいデータベースオブジェクトを生成し、insertして返す。