Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否将不同类型的NSArray插入sqlite数据库?_Objective C_Database_Sqlite_Nsarray - Fatal编程技术网

Objective c 是否将不同类型的NSArray插入sqlite数据库?

Objective c 是否将不同类型的NSArray插入sqlite数据库?,objective-c,database,sqlite,nsarray,Objective C,Database,Sqlite,Nsarray,嘿,我有一个关于将数据插入sqlite数据库的问题。我想创建一个通用类,用于将数据插入sqlite数据库。所以我写了一个这样的方法: -(void)saveData:(char)sqlstmnt andValues:(NSArray *)Values { char *sql= &sqlstmnt; sqlite3_prepare_v2(database, sql, -1, &statement, NULL); } 现在我的问题是,给定的数组“值

嘿,我有一个关于将数据插入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]);
}
如果有人能帮我,那就太好了

因为我需要它的类型

使用和

为什么不用图书馆?已经包含类似于
-(BOOL)executeUpdate:(NSString*)带ArgumentsInArray:(NSArray*)参数的sql的方法。
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
}