For Want Of A Better Word

【iOS7+Xcode5】FMDBサンプルアプリの構造確認①

      2015/04/18

DBの使い方を確認して、最終的には下記サイトを参考に作ったメモアプリを修正する形で実現したい。
iPhone用メモ帳アプリをつくる | プログラミング講座 JProgramer

※キーボードまわりを回収済み(入力後隠れる・入力時フィールドを上にずらす)
しかし、どういう風なプログラムの作りにするか、ちょっと指針が無い。

そこで修正の前に下記のサンプルソースを見て、DBのメソッドをどこに実装して、
どうやって使っているのかを確認し、実装の参考にする
iOS で SQLite – FMDB の使い方 | アカベコマイリ

ソース確認

ファイルはストーリーボード無しで下記のような構成
===============================
プロジェクト
– Libraries
– Supporting Files
– AppDelegate
– Views&Controllers
– Books (一覧画面)
– BooksEdit (編集画面)
– Models
– Book
– DaoBooks
===============================

ModelがDBまわりと思われる。

Models>Bookはエンティティクラス。このクラスのインスタンス一つが1レコードになる感じ。javaい。
ヘッダでDB項目を定義。モデルでは「@synthesize」でgetter,setterを確保して
メソッドはメモリ解放だけ。

Models>DaoBooksは

ヘッダファイルで

という風に定義

※(補足) @クラスについては下記
Objective-Cと戦うブログ: #importと@classの使い方について

…まだちょっとよく分からないです。

で実装ファイルを見ると

FMDBのヘッダをインポート、
エンティティクラスのヘッダをインポート(@classとした場合はこうする必要があるらしい)。

んでDB扱う上で特徴的なのが下記か

「CREATE TABLE」の「IF NOT EXISTS books 」で、テーブルが無い場合だけ作成することが出来る。

DB操作用のSQLを定数として先にかいてしまう。?はプレイスホルダ―で、値はメソッドの中で下記のように渡している。

ちなみにopenやcloseも各メソッドの中で実施。

コネクション取得用のメソッドを作って..

各メソッドで呼び出し

※補足()定数のメッセージ先がDaoBooksだったり、メソッドのメッセージ先がselfだったりの、クラス名部分が分からんね。。

更新系SQLの実行後は、実行処理の戻り値がtrueかfalseかで成否を判断という感じ。

これが大体のDaoクラスの構造。
うん、わかりやすくていいね。いいね。

まとめ

Daoクラスの作りについてまとめると

・エンティティクラスを用意。(ヘッドで扱うDB項目に対応する変数を宣言する。)
・Daoクラスを用意。@classでエンティティと同じクラス名にする。(mファイルで、エンティティのhを#import)
・Daoクラスでは発行するSQLを#defineで定義。値部分はプレイスホルダ(「?」)で置き換え
・コネクション取得用のメソッドを定義
・各目的・CRUD用のメソッドを記述。(TableのCreateも作らないとアカンのに注意。)

こんな感じ。

次はこれらをどういう感じで呼び出しているのかを確認。


【iOS7+Xcode5】FMDBサンプルアプリの構造確認② – For Want Of A Better Word

 - ios, objective-c, xcode

  関連記事

objective-c
iOS7+Xcode5開発_メモ帳サンプルアプリ改修①編集終了後キーボードを隠す。

編集終了後キーボードを隠す。 TextFieldについて [参考]http:// …

no image
【つかれた…】IOS7+Xcode開発_なぞなぞアプリ_作成メモ【やっぱり開発向いてないのかな..】

いろいろあって、まずは下記でTODOアプリをやろうとしたけど、 [iOS]Sto …

objective-c
【iOS_Xcode5】 Mastere-Detailテンプレートの要素追加の処理を追う

テンプレートを作った時デフォルトで「+」を押した時に時刻の行が追加されて、詳細に …

objective-c
【とりあえず動いた…】IOS7+Xcode開発_TODOアプリ_作成メモ(3)【しかし詳細画面がない】

3/3でついにTODO完成だぜ! http://dev.classmethod. …

no image
iOSアプリ開発入門①(iOS7 + Xcode5)

【参考】iOS7の超絶勉強になるアプリ開発チュートリアルまとめ http://y …