Я посмотрел на другие ответы, но я не видел ни одного ответа на проблему, которая у меня есть. Меня больше интересует, как я это делаю, когда-либо работаю, и если да, то как; чем здесь альтернативные методы. Проект предназначен для мобильных устройств с использованием объектива c.Проблема с заполнением таблицы SQLite FTS на iOS
Сначала создаю обычный стол, а затем таблицу FTS, как показано ниже.
NSString *searchTable = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (%@ INTEGER PRIMARY KEY, %@ TEXT, %@ TEXT, %@ TEXT)", gPsalmVersesTableName, gIDKey , gNameKey, gVerseKey, gTextKey];
if (sqlite3_exec(mInfoDB, [searchTable UTF8String], NULL, NULL, &errMsg) != SQLITE_OK)
NSLog(@"Failed to create table %@", gPsalmVersesTableName);
NSString *virtualTable = [NSString stringWithFormat:@"CREATE VIRTUAL TABLE IF NOT EXISTS %@ USING fts4 (content='%@', %@)",gFTSPsalmVersesTableName, gPsalmVersesTableName, gTextKey];
if (sqlite3_exec(mInfoDB, [virtualTable UTF8String], NULL, NULL, &errMsg) != SQLITE_OK)
NSLog(@"Failed to create table %@", gFTSPsalmVersesTableName);
Тогда я заселить регулярный стол (gPsalmVersesTableName), я подтвердил, что этот шаг работает правильно. Загрузив содержимое приложения и прочитав таблицу в средстве просмотра базы данных.
Когда я заполняю таблицу FTS, я не получаю никаких ошибок, однако данные не добавляются в таблицу.
if (sqlite3_open([mDataBaseName UTF8String], &mInfoDB) == SQLITE_OK)
{
sqlite3_stmt *statement;
@try
{
NSString *rebuildSQL = [NSString stringWithFormat:@"INSERT INTO %@(%@) VALUES('rebuild')", gFTSPsalmVersesTableName, gFTSPsalmVersesTableName];
int result = sqlite3_prepare_v2(mInfoDB, [rebuildSQL UTF8String], -1, &statement, NULL);
NSLog(@"%s", sqlite3_errstr(result));
}
@finally
{
sqlite3_finalize(statement);
sqlite3_close(mInfoDB);
}
}
У меня есть тот же код на Android, и он отлично работает. Любая помощь будет оценена по достоинству.
Спасибо за ответ, это забавно, как когда-нибудь вы можете пропустить очевидное. –