我有警告Use of undeclared identifier 'sql3'
。
如果我删除if statement
,则没有任何问题,但sql3
内的if statement
似乎无法识别。
有没有办法解决它?
if ([typedepartie isEqual: @"ami"]) {
const char *sql3 =
[[NSString stringWithFormat:@"SELECT id
FROM tabledesquestions
WHERE pack = ? ORDER BY RANDOM() LIMIT 4"]
cStringUsingEncoding:NSUTF8StringEncoding];
}
listequestionmulti = [[NSMutableArray alloc]init];
sqlite3_stmt *sql1Statement;
if(sqlite3_prepare(database1, sql3, -1, &sql1Statement, NULL) != SQLITE_OK) {
NSLog(@"Problem with prepare statement: %s", sqlite3_errmsg(database1));
}
答案 0 :(得分:1)
标识符sql3
在花括号内定义。因此,这些花括号纯粹是局部的。因此,当您越过代码的下一部分时,它就不再存在了。
if ([typedepartie isEqual: @"ami"]) {
const char *sql3 = // sql3 is born here...;
} // and dies here
你想要的更像是这样:
char *sql3 = // default value;
if ([typedepartie isEqual: @"ami"]) {
sql3 = // other value;
}