在我之前的问题中: 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>'