FMDB の kvcMagicメソッド

FMDBを使ってSQLiteをさわろうと思って色々と調べてたら次のメソッドを発見。
kvcMagic!!!
なんとも怪しげな名前ではないですか。
実はこのメソッド、 Cocoa の Key-Value Coding を利用して
SQL実行結果を、引数で渡したオブジェクトに突っ込んでくれるのです。

- (void)kvcMagic:(id)object {

    int columnCount = sqlite3_column_count([_statement statement]);
    
    int columnIdx = 0;
    for (columnIdx = 0; columnIdx < columnCount; columnIdx++) {
        
        const char *c = (const char *)sqlite3_column_text([_statement statement], columnIdx);
        
        // check for a null row
        if (c) {
            NSString *s = [NSString stringWithUTF8String:c];
            
            [object setValue:s forKey:[NSString stringWithUTF8String:sqlite3_column_name([_statement statement], columnIdx)]];
        }
    }
}

なんて便利なんだと思ってたら、これデータ型が何であろうとすべて文字型 を突っ込んでいるではないですか。。。
というわけで、ここからHacking。
と思ってたら、すでにやってる人がいたので以下Gist。

kvcMagic: for more than just strings....

いやー、実に便利ですね。
これこそObjective-Cの真骨頂。
パラメータにEntityクラスを渡してやれば、すべてうまく行きそうですね。
ただ、Entityの@property を小文字で定義していたので、上のソースに lowercaseString を入れてやるとうまくいきました。