使用未声明的标识符 - 标识符位于“if语句”中

时间:2014-02-05 22:15:16

标签: objective-c if-statement undeclared-identifier

我有警告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));
}

1 个答案:

答案 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;
}