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