2

在我之前的问题中: How to create a filter that does the SQL equivalent of WHERE ... IN for SQLite.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))

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

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>'

4

0 回答 0