Pregunta

I have an alert Use of undeclared identifier 'sql3'.

If I delete the if statement, there 's no problem, but it seems it's not recognized when sql3 is inside the if statement.

Is there a way to fix it?

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));
}
¿Fue útil?

Solución

The identifier sql3 is defined inside curly braces. Therefore it is purely local to those curly braces. Therefore when you get past that to the next part of your code, it no longer exists.

if ([typedepartie  isEqual: @"ami"]) {
   const char *sql3 = // sql3 is born here...;
} // and dies here

What you want is more like this:

char *sql3 = // default value;
if ([typedepartie  isEqual: @"ami"]) {
    sql3 = // other value;
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top