Swift:打开/创建 SQLite 数据库适用于模拟器,但不适用于 iPhone

问题描述

我是 Swift、Xcode 和 sqlite 的新手。试图打开/创建一个数据库并创建一个表。它适用于模拟器,但不适用于我的 iPhone。如果有人能帮我解决这个问题,我将不胜感激。

func openDatabase() -> OpaquePointer? {
    let filePath = try! FileManager.default.url(for: .documentDirectory,in: .userDomainMask,appropriateFor: nil,create: false).appendingPathExtension(path)
    
    var db : OpaquePointer? = nil
    
    // Check for error in creating db or return database
    if sqlite3_open(filePath.path,&db) != sqlITE_OK {
        print("Error in creating database.")
        let errorMessage = String(cString: sqlite3_errmsg(db))
        print(errorMessage)
        sqlite3_close(db)
        db = nil
        return nil
    } else {
        print("Database has been created with path \(path)")
        return db
    }
}

//Create database table with query
func createTable(){
    let query = "CREATE TABLE IF NOT EXISTS prime(primenumber INTEGER,date TEXT);"
    var createTable : OpaquePointer? = nil
    
    if sqlite3_prepare_v2(self.db,query,-1,&createTable,nil) == sqlITE_OK {
        if sqlite3_step(createTable) == sqlITE_DONE { //table is created
            print("Table successfully created.")
        } else {
            print("Table creation Failed.")
        }
    } else {
        print("Table preparation Failed.")
        let errorMessage = String(cString: sqlite3_errmsg(db))
        print(errorMessage)
    }
}

错误信息:

2021-01-06 17:25:22.308037+0100 sqliteTest[3691:955723] [logging-persist] 无法在 [378230ae7f] 的第 43353 行打开文件 2021-01-06 17:25:22.308134+0100 sqliteTest[3691:955723] [logging-persist] os_unix.c:43353: (0) open(/var/mobile/Containers/Data/Application/D0AEB94BE-E2586 -B4DD-813F7EA1935D/Documents.myDb.sqlite) - 未定义错误:0 创建数据库时出错。 无法打开数据库文件

2021-01-06 17:25:22.308955+0100 sqliteTest[3691:955723] [logging] 带有 NULL 数据库连接指针的 API 调用 2021-01-06 17:25:22.309016+0100 sqliteTest[3691:955723] [logging] 在 [378230ae7f] 的第 131400 行误用 表准备失败。 内存不足

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)