2016-12-30 3 views
0

Предупреждающее сообщение появляется, когда я использую свою базу данных SQLite. Он отображается в базе данных «&» Любые идеи?Передача 'sqlite3 * const *' (aka 'struct sqlite3 * const *') в параметр типа 'sqlite3 **' (aka 'struct sqlite3 **') отбрасывает квалификаторы

sqlite3 *database; 

NSLog(@"Open Database : %@", path); 

      // Open the database. The database was prepared outside the application. 
      if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
      { 
       NSLog(@"Open Database OK"); 


       NSString *selectSQL = [NSString stringWithFormat:@".... 
+1

Где вы определили метод получения пути db? –

+3

Хм. Я не могу выполнить эту ошибку с помощью этого кода. Я получаю это точное сообщение об ошибке времени компиляции, если я так называю «базу данных»: «sqlite3 * const database;». Теперь я не думаю, что вы бы это сделали и не поделились с нами, но я подозреваю что-то в вашем определении «базы данных». Но проблема не в приведенном выше коде. Возможно, вы можете поделиться более подробной информацией о том, где у вас есть этот код и т. Д. – Rob

+0

Thx для вашей помощи, это потому, что я использовал базу данных в dispatch_async и объявление базы данных за пределами этого dispatch_async. Я не знал, что не мог этого сделать ... – Claudio

ответ

0

Ответ: Это потому, что я положил объявление базы данных за пределы отправки.

Вот мой старый код более полная, чем наверху:

sqlite3 *database; 
NSString *path = [[self documentsDirectory] stringByAppendingPathComponent:@"tva.sqlite"]; 

dispatch_queue_t searchTVAQueue = dispatch_queue_create("searchTVA", NULL); 
     dispatch_async(searchTVAQueue, ^{ 
NSLog(@"Open Database : %@", path); 

      if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
      { 
       NSLog(@"Open Database OK"); 

       NSString *selectSQL = [NSString stringWithFormat:@".... 
       ... 

Вот хороший код:

dispatch_queue_t searchTVAQueue = dispatch_queue_create("searchTVA", NULL); 
     dispatch_async(searchTVAQueue, ^{ 

sqlite3 *database; 
NSString *path = [[self documentsDirectory] stringByAppendingPathComponent:@"tva.sqlite"]; 

NSLog(@"Open Database : %@", path); 

      if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
      { 
       NSLog(@"Open Database OK"); 

       NSString *selectSQL = [NSString stringWithFormat:@".... 
       ... 

Я просто включил декларацию базы данных непосредственно в dispatch_async.

Смежные вопросы