Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我的代码不将数组中的所有行保存到表中?_Ios_Swift_Sqlite - Fatal编程技术网

Ios 为什么我的代码不将数组中的所有行保存到表中?

Ios 为什么我的代码不将数组中的所有行保存到表中?,ios,swift,sqlite,Ios,Swift,Sqlite,我在Swift中创建了一个函数,用于将字典数组的内容保存在表中。我在数组中得到19个字典,但我发现只有两个保存在数据库表中。控制台给了我所有字典的正面反馈 这是我的代码: func insert(feedback : [[String : Any]], inTable : String) { var insertStatement: OpaquePointer? = nil let db1 = openDatabase() let keysArray = Array(fe

我在Swift中创建了一个函数,用于将字典数组的内容保存在表中。我在数组中得到19个字典,但我发现只有两个保存在数据库表中。控制台给了我所有字典的正面反馈

这是我的代码:

func insert(feedback : [[String : Any]], inTable : String) {
    var insertStatement: OpaquePointer? = nil
    let db1 = openDatabase()
    let keysArray = Array(feedback[0].keys)

    let keysString = keysArray.joined(separator: ", ")

    print("Modules: ", feedback.count)
    for i in 0...feedback.count - 1
    {
        let valuesArray = Array(feedback[i].values)
        var values = ""
        for value in valuesArray {
            values += "'\(value)',"
        }

        values = String(values.dropLast())

        let insertQuery = "INSERT OR REPLACE INTO \(inTable) (\(keysString)) VALUES (\(values))"

        if sqlite3_prepare_v2(db1, insertQuery, -1, &insertStatement, nil) == SQLITE_OK {
            if sqlite3_step(insertStatement) == SQLITE_DONE {
                print("Successfully inserted row.")
            } else {
                print("Could not insert row.")
            }
        } else {
            print("INSERT statement could not be prepared.")
        }
    }

    sqlite3_finalize(insertStatement)
    sqlite3_close(db1)
}

您的数组有多个字典 您的字典可以有更多的键值对。 现在可以使用不同的字典在数组中进行迭代

您的问题可能是“KeyArray”: 让keysArray=Arrayfeedback[0]。键0应该是动态的
您只使用数组中第一个字典中的键,仅供参考-您对sqlite3_finalize的调用位于错误的位置。它需要在与if sqlite3\u prepare\u v2关联的else之前……您如何知道SQLite支持您拥有的所有数据类型?您应该改为创建一个模型并将数据另存为数据。@代码正在将所有内容转换为字符串。