Coredataに慣れないので, 最近はFMDBを使っています。
FMDBを使ってみる
GitHubからソースをDLします。FMDBはMITライセンスです。
fmdb.m以外のsrcをプロジェクトに追加します。
それから,libsqlite3.0.dylibをリンクさせます。
#import "FMDatabase.h"
- (FMDatabase *)getConnection
{
if( self.dbPath == nil )
{
self.dbPath = [self getDbFilePath];
}
return [FMDatabase databaseWithPath:self.dbPath];
}
- (NSString*)getDbFilePath
{
NSArray* paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
NSString* dir = [paths objectAtIndex:0];
return [dir stringByAppendingPathComponent:@"vibly.db"];
}
-(IBAction)createDB:(id)sender{
FMDatabase* db = [self getConnection];
NSString* sql = @"CREATE TABLE IF NOT EXISTS favorites (day INTEGER PRIMARY KEY AUTOINCREMENT, caption TEXT, word TEXT, count INTEGER, image TEXT, title TEXT, url TEXT, events TEXT, author TEXT, isbn TEXT);";
NSString* insert = @"INSERT INTO favorites (day,caption,word,count,image,title,url,events,author,isbn) VALUES (?,?,?,?,?,?,?,?,?,?)";
[db open];
[db executeUpdate:sql];
[db executeUpdate:insert, day_str,[dic_events objectForKey:@"caption"],[dic_events objectForKey:@"word"],(int)[dic_events objectForKey:@"count"],[dic_events objectForKey:@"image"],[dic_events objectForKey:@"title"],[dic_events objectForKey:@"url"],[dic_events objectForKey:@"events"],[dic_events objectForKey:@"author"],[dic_events objectForKey:@"isbn"]];
[db close];
}
Prepared Statementが使えるので ? 部分を引数で追加してきます。
sqlite対話モードで確認する
シミュレータで作成したdbファイルは以下にあります。
$ cd /Users/[USER]/Library/Application Support/iPhone Simulator/[Ver]/Applications/[文字]/Documents/
SQLiteの対話モードを起動します。
$ sqlite3 [DB]
.helpでコマンド一覧を表示します。.qで終了します。SQLに慣れていればcoredataより使いやすいですね。
[1] URL