0

我有一个警报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));
}
4

1 回答 1

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;
} 
于 2014-02-05T22:19:13.110 回答