簡體   English   中英

ios sqlite fts擴展“沒有這樣的模塊fts4”錯誤

[英]ios sqlite fts extensions “no such module fts4” error

我正在嘗試根據本教程設置一個帶有CoreDataFMDB的索引數據庫( 這里

我是ios的初學者,所以我在添加時可能會出錯

SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS宏。

我將它們添加到Other C Flags中。

這是我的代碼:

- (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"]];
        }
    }];
}

編輯:

DB錯誤:1“沒有這樣的模塊:fts4”

我在didFinishLaunchingWithOptions方法的app delegate中調用此函數

只是為了確認; 如果您的目標是iOS 6或更高版本,則無需構建自己的SQLite即可獲得FTS。

由於SQLite的構建不包括FTS模塊,因此發生此錯誤。 我嘗試了另一種方法來克服它。 我刪除了有關SQLite和FMDB的所有文件。 然后,我使用podfile將FMDB添加到我的項目中,並且它成功運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM