Sqlite.Swift:如何过滤空列?

时间:2016-06-07 10:44:01

标签: swift sqlite.swift

在我之前的问题中: How to create a filter that does the SQL equivalent of WHERE ... IN for SQLite.Swift

我问如何在swift中做一个WHERE ... IN。

现在,如何过滤可选的表达式?

我有一个版本化的数据库,允许我在创建表后向表中添加列。为实现这一目标,我使用

创建了该列
static let timeTag = Expression<String?>("timeTag")

然后调用

try DB.run("PRAGMA user_version = 2")
let query = table.addColumn(timeTag)
let _ = try DB.run(query)

一切正常,表确实有该列,我可以将数据添加到列等等。

通常当我需要在其他列中进行过滤时,我会

table.filter(self.id == id && self.name == name)

当我需要在哪里做,

table.filter((myNameArray.contains(self.name))

现在我想要使用数组timeTagArray过滤timeTag列,这是一个需要查找的timeTag数组。我试过了

table.filter(timeTagArray.contains(self.timeTag))

和表格示例:

+----+-------+-----------+
| id | name  | timetag   |
+----+-------+-----------+
| 1  | Joe   | Morning   |
+----+-------+-----------+
| 2  | Alan  | Afternoon |
+----+-------+-----------+
| 3  | Brad  | Morning   |
+----+-------+-----------+
| 4  | Ian   | Evening   |
+----+-------+-----------+
| 5  | Louis | Midnight  |
+----+-------+-----------+

如果我的timeTagArray = ["Morning", "Midnight"]那么我应该回到第1,3,5行。

但它给了我说错误 Cannot assign value of type 'Expression<Bool?>' (aka 'Expression<Optional<Bool>>') to type 'Expression<Bool>'

0 个答案:

没有答案