iPhoneアプリ開発学校に通う生徒のおおまかな学習日報

Objective-C初心者。iPhoneアプリ開発学校に通う落ちこぼれです。授業の内容を記録しているのですが時間の都合でおおまかに書いてます。投稿内容は参考にしちゃだめです。

【木曜日】FMDB

睡眠時間約6.5時間。

今日はSQLiteのデータベースを使ってなにかするらしいです。
Objective-CSQLiteの機能を使用できる様にしたFMDBというライブラリを使うらしいです。

▼FMDBの配布先
https://github.com/ccgus/fmdb

ダウンロードして解凍してsrcフォルダの中の「fmdb.m」以外のファイルをプロジェクトにコピーする。

▼新しくグループ(フォルダ)を作ってそこにファイルを入れる
f:id:jaam:20131107141145p:plain


▼プロジェクトの設定画面のBuild Phasesタブに下記を追加
f:id:jaam:20131107141153p:plain


▼入ってることを確認する 入ってなかったら+ボタンで追加する
f:id:jaam:20131107141159p:plain

↓ViewController.mに下記を追加

#import "FMDatabase.h"


↓viewDidLoadにこれを追加

    //データベース名
    NSString *databaseName = @"test.db";
    //データベースファイルを格納するために文書フォルダーを取得
    NSString *workPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    //データベースファイルパスの取得
    NSString *databasePath = [workPath stringByAppendingPathComponent:databaseName];
    //NSLog(@"データベースファイルのありか%@", databasePath);
    
    //データベースのオープン
    FMDatabase *db = [FMDatabase databaseWithPath:databasePath];
    [db open];
    //SQL文の実行とデータの取得
    FMResultSet *result = [db executeQuery:@"select datetime('now', 'localtime')"];
    //カーソルを先頭へ
    [result next];
    //先頭行の1列目のデータを取得
    NSString *str = [result stringForColumnIndex:0];
    //結果を表示してみる
    NSLog(@"データベースから得た今の時間は%@です。", str);
    //データベースを閉じる
    [db close];


↓RUNすると下記がコンソールに出る。

2013-11-07 09:29:23.593 20131107_FMDB_SQLiteEx[2055:11303] データベースから得た今の時間は2013-11-07 09:29:23です。

次に、コンソールではなくシミュレーターの画面に表示してみたり。


▼あ、エラーが出てしまった
f:id:jaam:20131107141213p:plain

Property 'textView' not found on object of type 'ViewController *'

↓先生に教えてもらって解決!

self.textView.text = str; // 間違い
self.text.text = str; // 正しい


▼はい、でけました
f:id:jaam:20131107141222p:plain


▼データベースへの命令は下記のようにopenとcloseの間に書くのだ!

[db close];
// テーブルの作成
BOOL success = [db executeUpdate:@"create table testdb(id integer primary key,name text)"];

if( success == YES ) {
    NSLog(@"テーブル作成成功");
} else {
    NSLog(@"テーブル作成失敗");
}
[db open];


その他、INSERT文を使ったりもしました。
SQliteはだいぶ前に習ったので記憶がほとんど無くなってる…
予習しとけば良かった。

この授業、先生への質問がいつもより多いのでみんな苦戦している模様。
私も苦戦中。


午後の授業開始。
次に、リソースに以前作ったtest.dbファイルを追加してそれを読み込む勉強。

▼でけた
f:id:jaam:20131107141231p:plain


次に、前に作ったおみくじプログラムを呼び出してみる。
(前に作ったと言ってもこのブログをはじめる前のことだが)

↓こんなテーブルなのです

sqlite> select * from omikuji;
1|大吉|何かいい事あるかもねでげす!
2|小吉|まあまあですでげす
3|吉|普通が一番でげす
4|凶|ある意味ラッキーでげす
5|中吉|そこそこラッキーでげす
6|大凶|段差に気を付けて、転びますでげす!
sqlite> 

▼でけた
f:id:jaam:20131107141239p:plain

構文は以前SQliteをやったときに学んだrandom関数をテキストファイルに残しておいたのでコピペで楽勝!


そんなこんなで本日の授業終了。
もうちょっと込み入ってアプリっぽくしたい場合は先生があとで用意するコードを参考にすること。
今日はSQliteのコピペメモが大変役に立った日でありました。


以下、要復習。
・先生の用意したコードを見てみること