ios sqlite fts 扩展“没有这样的模块 fts4”错误
Posted
技术标签:
【中文标题】ios sqlite fts 扩展“没有这样的模块 fts4”错误【英文标题】:ios sqlite fts extensions "no such module fts4" error 【发布时间】:2014-01-27 09:23:02 【问题描述】:我正在尝试根据本教程 (here) 使用 CoreData
和 FMDB
设置索引数据库
我是ios初学者,添加的时候可能会出错
SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS 宏。
我将它们添加到其他 C 标志中。
这是我的代码:
- (void) setIndexDatabase
// Create (or open) our database
NSString *dbPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
dbPath = [dbPath stringByAppendingPathComponent:@"Index.sqlite"];
// Using the FMDatabaseQueue ensures that we don't accidentally talk to our database concurrently from two different threads
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:dbPath];
[queue inTransaction:^(FMDatabase *db, BOOL *rollback)
[db executeUpdate:@"CREATE VIRTUAL TABLE IF NOT EXISTS docs USING fts4(name, contents);"];
];
//Add content to index
[queue inDatabase:^(FMDatabase *db)
[db executeUpdate:@"INSERT INTO docs (name, contents) VALUES(?, ?);", @"doc1", @"She sells sea shells by the sea shore."];
];
//Search
__block NSMutableArray *matches = [NSMutableArray array];
[queue inDatabase:^(FMDatabase *db)
FMResultSet *resultSet = [db executeQuery:@"SELECT name FROM docs WHERE docs MATCH ?", @"she*"];
while ([resultSet next])
[matches addObject:[resultSet stringForColumn:@"name"]];
];
编辑:
数据库错误:1“没有这样的模块:fts4”
我在应用程序委托中的 didFinishLaunchingWithOptions 方法中调用此函数
【问题讨论】:
出现什么错误,什么时候出现 请编辑问题 iPhone官方没有fts4,而且ios6之前肯定没有 你的部署目标是什么? 错误,当它出现时被添加到问题中 【参考方案1】:只是为了确认;如果您的目标是 iOS 6 或更高版本,则无需构建自己的 SQLite 即可获得 FTS。
【讨论】:
【参考方案2】:发生此错误是因为 SQLite 的构建不包含 FTS 模块。我尝试了另一种方法来克服它。我删除了所有关于 SQLite 和 FMDB 的文件。然后,我使用 podfile 将 FMDB 添加到我的项目中,并且成功运行。
【讨论】:
以上是关于ios sqlite fts 扩展“没有这样的模块 fts4”错误的主要内容,如果未能解决你的问题,请参考以下文章
Kivy Android Sqlite3使应用程序崩溃时出现“没有这样的模块”错误
如何使用带有 Python 3.7 的 sqlite3 python 模块的 FTS5 扩展?
如何在 SQLite 中使用 FTS 和 Monotouch for iOS
如何在 Ubuntu 16.04 上将 FTS5 扩展与带有 Python 3.7 的 sqlite3 python 模块一起使用?