0

sqlite データベースへのデータの挿入について質問があります。sqlite データベースにデータを挿入するための一般的なクラスを作成したいと考えています。だから私はこのような方法を書いた:

-(void)saveData:(char)sqlstmnt andValues:(NSArray *)Values {

       char *sql= &sqlstmnt;

       sqlite3_prepare_v2(database, sql, -1, &statement, NULL);

}

今私の問題は、指定された配列の「値」が異なるクラスによって送信される可能性があり、その配列の内容がこのメソッドが呼び出されるたびに異なることです。int、bool、float、text が含まれます。それで、取得した配列の一部の型で「スキャン」できる方法または方法はありますか?何かのようなもの:

if ([Values objectAtIndex:i isINT]) {
    sqlite3_bind_int(statement, i, [Values objectAtIndex:i]);
}

if ([Values objectAtIndex:i isFLOAT]) {
    sqlite3_bind_float(statement, i, [Values objectAtIndex:i]);
}

if ([Values objectAtIndex:i isAnBOOL]) {
    sqlite3_bind_bool(statement, i, [Values objectAtIndex:i]);
}

誰かがそれで私を助けてくれたら、それは素晴らしいことです.

私はそれのタイプが必要なので

4

1 に答える 1

1

使用isKindOfClass:してobjCType

id object = ...

if ([object isKindOfClass:[NSString class]]) {
    // object is a string
}
else if ([object isKindOfClass:[NSNumber class]]) {
    if (strcmp([object objCType], @encode(BOOL)) == 0) {
        // bool
    }
    else if (strcmp([object objCType], @encode(int)) == 0) {
        // int
    }
    else if (strcmp([object objCType], @encode(float)) == 0) {
        // float
    }
    else if (strcmp([object objCType], @encode(double)) == 0) {
        // double
    }
    // and so on
}
于 2013-05-17T07:58:03.310 に答える