MonoTouch と iOS で開発を行っていると,SQLite テーブルデータの表示が必要な場合がある。自分で UITableViewController を構築すればすぐに可能なことだが,相当量の定型コードの記述とかなりの作業時間が必要になる。Jeffrey Stedfast 氏は MonoTouch.SQLiteで,このような単純なテーブルのバインディングを事実上,単一のメソッドにまで簡略化する方法を考案した。
MonoTouchSQLite はテーブルデータの表示を容易にすべく設計された,データベース対応 UI ライブラリである。その基本になっているのが SQLiteTableModel モデルクラスだ。このモデルには,最初からソートやフィルタなど基本的なテーブルへのアクセスが実装されている。従って単純なデータを表示するだけであれば何もする必要はないが,複雑な SQL を使用する必要がある場合はサブクラス化して,SQL 生成メソッドをオーバーライドすればよい。
クラススタックでその上に位置するのがコントローラそのものだ。iOS 開発経験のない方のために説明すると,Apple の UI ライブラリでは,古典的な MVC パターンに厳密に準拠することが求められている。テーブル形式のビューであれは,これはフレームワークの UITableViewController クラスを継承することを意味する。MonoTouch.SQLite はそのサブクラスである SQLiteTableViewController を通じて,この詳細の大部分を処理してくれる。サンプルアプリケーション を見れば,実装が必要なのは GetCell メソッドだけであることが確認できる。
エンドユーザ検索
エンドユーザによる情報検索を容易にするために,MonoTouch.SQLite にはユーザが入力した文字列を SQL の where 句に変換する機能が用意されている。これを利用するには,データモデルプロパティに SQLLiteSearchAlias 属性を単にタグ付けすればよい。同じエイリアスを複数回使用することも可能だ。例えば FirstName と LastName を,どちらもエイリアス "name" でタグ付けするようなことができる。この場合ユーザが 'address:"Newton,MA" name:Jane' と入力すれば,address 列とどちらかの name 列の一致を検索する where 句が生成される。
このすべてが,前述の UITableViewController をラップした iOS の UISearchDisplayController で動作する。