Ios 为什么我的代码不将数组中的所有行保存到表中?
我在Swift中创建了一个函数,用于将字典数组的内容保存在表中。我在数组中得到19个字典,但我发现只有两个保存在数据库表中。控制台给了我所有字典的正面反馈 这是我的代码: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
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支持您拥有的所有数据类型?您应该改为创建一个模型并将数据另存为数据。@代码正在将所有内容转换为字符串。