【问题标题】:Cant find default values in SQLite, swift快速在 SQLite 中找不到默认值
【发布时间】:2018-05-02 05:50:34
【问题描述】:

我想知道如何快速使用 SQLite 中的布尔值的默认值。我正在使用以下库:https://github.com/stephencelis/SQLite.swift 如果我不使用所有值,我的查询将不会被执行。

我在循环中这样做:

let insert = table.insert(name <- names[i])

捕获错误:

NOT NULL constraint failed: table.bool (code: 19)

我的问题是我希望 bool 值默认为 NULL。

我尝试使用这样的默认值创建我的数据库:

let bool = Expression<Bool?>("bool") 

那么我该怎么做才能在 SQLite 中快速创建默认值?

【问题讨论】:

    标签: ios swift sqlite


    【解决方案1】:

    该错误清楚地告诉您,此列中不能有 null,因此将 null 设置为默认值是没有意义的。因此,您的第一步是更改数据库定义以允许 null (如果可能的话)。

    更好的选择可能是重新考虑为什么要将 null 作为布尔值,或者列的类型是否应该不同。

    关于默认值,我会通过将插入移动到单独的函数中并使用 swift 对参数默认值的支持来快速解决这个问题。

    例子

    func insertStuff(withName name: String, flag: Bool = false) {
       //db-code
    }
    

    然后使用/不使用所有参数调用它

    insertStuff(withName: "abc", flag: true)
    insertStuff(withName: "edf")
    

    更新
    如果您确实希望该列为零,则可以使用可选参数

    func insertStuff(withName name: String, flag: Bool? = nil) {
       //db-code
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      相关资源
      最近更新 更多