当前位置: 首页 > 面试题库 >

迅速的sqlite不稳定

艾骏喆
2023-03-14
问题内容

我已经设置了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

您应该将itemNameas 转换为,NSString然后使用UTF8String来将字符串转换为UTF8。正确的代码在这里是相同的

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

祝好运。



 类似资料:
  • 问题内容: 我想要一个数字数组上的函数(或任何可加的事物的有序集合),该函数返回长度相同的数组,其中每个元素是A中所有元素的总和, 直到一个include。 例子: 我可以使用for循环或其他方式执行此操作。还有更多功能选择吗?它有点像reduce,只是它会构建一个包含所有中间值的结果数组。 更通用的是具有可以接受任何序列并提供输入序列的总运行时间的函数。 问题答案: 您正在寻找的通用组合器通常称

  • 问题内容: 我正在尝试将时间格式化如下: 假设当前时间是2014年9月3日22:15:30 当我在操场上运行此脚本时,它将打印正确格式的时间:。 在AppDelegate上运行时,它不会打印格式化的时间: 我正在使用xcode 6 beta 5 …我缺少什么吗?为什么stringFromDate没有返回正确的格式化日期? 编辑 :我正在使用xcode 6 beta 6。 谢谢! 问题答案: 24小

  • 问题内容: 迅速有没有通过声明?例如,如果我执行以下操作 案例“一”和案例“二”是否可以执行相同的代码? 问题答案: 是。您可以按照以下方式进行操作: 另外,您可以使用关键字:

  • 问题内容: 我正在使用Core Data开发应用程序。当我 使用以下方法创建实例时: 我在日志中收到警告: 我该如何解决? 还有另一个问题,如何在NSManagedObject 子类中定义实例方法? 问题答案: Xcode 7的更新(最终):不再需要在类之前添加模块名称(如Xcode6和Xcode7的早期beta版本一样)。Apple文档“ 实现核心数据托管对象子类”已相应更新。 数据模型检查器现

  • 本文向大家介绍Java版快速排序[不稳定]相关面试题,主要包含被问及Java版快速排序[不稳定]时的应答技巧和注意事项,需要的朋友参考一下 原理:分治+递归 复杂度:O(nlgn) - O(nlgn) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度] 栈空间0(lgn) - O(n)

  • 问题内容: 如何迅速地建立代表? 问题答案: 它与obj-c没什么不同。首先,您必须在类声明中指定协议,如下所示: 该实现将如下所示: 当然,您必须设置委托。例如: