我在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)
}
答案 0 :(得分:1)
您的阵列有多个词典 您的词典可以有更多的键值对。 您现在使用不同的词典迭代数组。
您的问题可能是'keysArray': let keysArray = Array(feedback [0] .keys)(0应该是动态的) 你只使用数组中第一个字典中的键