gpt4 book ai didi

ios - sqlite for swift 不稳定

转载 作者:行者123 更新时间:2023-11-30 10:44:38 24 4
gpt4 key购买 nike

我已经设置了 swift 项目来使用 sqlite。有时,插入时它实际上并没有插入正确的(或全部)值。我知道,因为我重新启动了应用程序,当我返回时,条目要么随机错误(未插入内容),要么为零。但有时是正确的。

这是我设置它的地方,是的,插入之前的值中的数据是正确的。

let update = "INSERT INTO ToDoItem (itemName, completed, goalDate) " + "VALUES (?, ?, ?);"
var statement: COpaquePointer = nil
if sqlite3_prepare_v2(database, update, -1, &statement, nil) == SQLITE_OK {
let itemName = item.itemName as String
let completed = item.completed == true ? 1 : 0

sqlite3_bind_text(statement, 1, itemName, -1, nil)
sqlite3_bind_int(statement, 2, Int32(completed))

if let goalDate = item.goalDate?.toString() {
sqlite3_bind_text(statement, 3, goalDate, -1, nil)
} else {
sqlite3_bind_text(statement, 3, "", -1, nil)
}

//println("inserting \(itemName), \(completed) and \(item.goalDate?.toString())")
//println("")
}

if sqlite3_step(statement) != SQLITE_DONE {
println("error updateing table")
sqlite3_close(database)
return
}
sqlite3_finalize(statement)

sqlite3_close(database)

你可以看到中间被注释掉的println,如果没有注释掉,那么itemName有时会成为该字符串的一部分。

最佳答案

我也遇到了同样的问题。我找到了解决这个问题的方法。

sqlite3_bind_text(statement, 1, itemName, -1, nil) --> itemName should be UTF8 String

您应该将 itemName 转换为 NSString 并使用 UTF8String 将字符串转换为 UTF8。正确的代码在这里是相同的

let itemName = item.itemName as NSString
sqlite3_bind_text(statement, 1, itemName.UTF8String, -1, nil)

祝你好运。

关于ios - sqlite for swift 不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56006308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com