Передача ‘ sqlite3 *const * ‘(aka ‘ struct sqlite3 *const*’) параметру типа ‘ sqlite3 * * ‘(aka ‘ struct sqlite3**’) отбрасывает квалификаторы

При использовании базы данных sqlite появится предупреждение. Отображается в «& database»
Есть идеи ?

 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 ответ

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

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

    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.