Я знаю, что симулятор и реальное аппаратное обеспечение iOS не ТОЧНО одинаковы, но я начинаю стягивать с себя волосы из-за этого. У меня есть этот код:
sqlite3 *database;
sqlite3_stmt *statement;
int themeCount;
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSString *updateSQL = [NSString stringWithFormat: @"SELECT COUNT(*) FROM Theme"];
const char *update_stmt = [updateSQL UTF8String];
if(sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL) == SQLITE_OK){
if(sqlite3_step(statement)==SQLITE_ROW)
{
themeCount = sqlite3_column_int(statement, 0);
}
}
sqlite3_finalize(statement);
sqlite3_close(database);
}
С симулятором все работает отлично. Как только я нажимаю на устройства, происходит сбой. Я сломал его и нашел код возврата, где он не работает:
if(sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL) == SQLITE_OK)
Если я изменю эту строку для захвата кода (т. Е. Int x = sqlite3_prepare_v2 (...)), он вернет 0 с помощью симулятора, 1 с устройством. Что я тут не так делаю?!?!
Кроме того, для записи оператор CREATE для таблицы Theme:
@"CREATE TABLE Theme (ThemeId INTEGER PRIMARY KEY, ThemeName TEXT, Available BIT);"
(моя первая мысль, что он чувствителен к регистру)