我想最好的办法是向代码展示我在结果中所做的:
if (sqlite3_column_text(statement, 0)) { [marker setObject:[NSNumber numberWithInt: sqlite3_column_int(statement, 0)] forKey:@"id"]; }
对于if语句,它总是返回false:
if (sqlite3_column_int(statement, 0)) { [marker setObject:[NSNumber numberWithInt: sqlite3_column_int(statement, 0)] forKey:@"id"]; }
这将为列返回不正确的结果:
if (sqlite3_column_text(statement, 0)) { [marker setObject:[NSNumber numberWithInt: sqlite3_column_text(statement, 0)] forKey:@"id"]; }
在尝试访问列的值之前,应该先获取返回的列数。
int count = sqlite3_column_count (statement);
sqlite3_column_type () == SQLITE_NULL;
另外,Obj-C不会自动转换不同的类型,因此 numberWithInt: sqlite3_column_text
numberWithInt: sqlite3_column_text