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

时间:2018-02-06 18:12:53

标签: ios swift sqlite

我在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)
}

1 个答案:

答案 0 :(得分:1)

您的阵列有多个词典 您的词典可以有更多的键值对。 您现在使用不同的词典迭代数组。

您的问题可能是'keysArray': let keysArray = Array(feedback [0] .keys)(0应该是动态的) 你只使用数组中第一个字典中的键