Выбор SQLite3 работает на симуляторе, но не на устройстве

Я храню коллекцию значений в таблице с несколькими столбцами разных типов, и вставка и выбор отлично работает, когда я запускаю приложение на симуляторе iPhone. Тем не менее, при работе на реальном устройстве и выборе данных, похоже, что он не может получить некоторые из текстовых столбцов таблицы (остальные столбцы, кажется, правильно получены). Там, где мне должен быть показан диалог со строкой, я не получаю, я получаю пустой диалог, тогда как диалог со строкой был правильно отображен на симуляторе.

Это фрагмент кода для вставки:

if(sqlite3_prepare_v2(database, sqlStatement,
                          -1, &compiledStatement, NULL) == SQLITE_OK)
    {
        sqlite3_bind_int(compiledStatement, 1, userData.ID);
        sqlite3_bind_double(compiledStatement, 2, userData.Location.Lat);
        sqlite3_bind_double(compiledStatement, 3, userData.Location.Lon);
        sqlite3_bind_text(compiledStatement, 4, [userData.Name UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(compiledStatement, 5, [userData.Surname UTF8String], -1, SQLITE_TRANSIENT);
    }

    if(sqlite3_step(compiledStatement) == SQLITE_DONE) {
        sqlite3_finalize(compiledStatement);
    }
    else {
        NSLog(@"%d",sqlite3_step(compiledStatement));
    }
}
sqlite3_close(database);

И это выбор:

if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
        while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
            UserData *userData = [[UserData alloc] init];

            userData.ID = sqlite3_column_int(compiledStatement, 0);

            char *name = sqlite3_column_text(compiledStatement, 1);
            if (name == nil)
                userData.Name = @"";
            else
                userData.Name = [NSString stringWithUTF8String: name];

            [list addObject:userData];
        }
    }
    sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);

Я абсолютно не знаю, почему управление данными в базе данных ведет себя хорошо в симуляторе (у меня есть плагин SQLite Manager, и данные правильно хранятся и извлекаются), но это не так, как в реальном iPhone. Как я могу проверить, что там происходит на устройстве? Кто-нибудь испытывал нечто подобное?

Спасибо!

2 ответа

Решение

Я наконец-то начал работать, следуя всем вашим советам, и я думаю, что в конечном итоге проблема была решена с учетом регистра. Спасибо вам всем

Я думаю, что проблема может быть вызвана пустыми записями и вашими if nil не помогает, попробуй NULL вместо:

if ((char *)sqlite3_column_text(compiledStatement, 1) == NULL)
 userData.Name = @"";
Другие вопросы по тегам