ios - 无法在 SQLite 中找到默认值,swift

标签 ios swift sqlite

我想知道如何在 swift 中为 SQLite 中的 bool 值使用默认值。我正在使用以下库: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") 

那么如何在 Swift 中创建 SQLite 中的默认值呢?

最佳答案

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

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

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

例子

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

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

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

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

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

关于ios - 无法在 SQLite 中找到默认值,swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50127896/

相关文章:

vba - 在 Excel 中的 VBA 中访问 SQLite 数据库

objective-c - Restkit是否通过CoreData Sqlite处理实体唯一性?

ios - "Push Notifications"目标能力和解析推送

ios - 使用 FBSDKLoginBehaviorWeb 处理 Facebook 集成上的错误密码事件

ios - 如何在 Swift 中创建一个类数组

ios - 如何在 Swift 中的 NSJSONSerialization.dataWithJSONObject 之后获得可读的 JSON

mysql - SQLite SELECT 语句获取列名,其中列有值

android - 转让 iOS 和 Android 应用程序的所有权

ios - 使用 CocoaPods 导入时出错

javascript - 带有位置服务的 wkwebview