Sqlite.Swift: как фильтровать пустые столбцы?
В моем предыдущем вопросе: Как создать фильтр, который делает SQL-эквивалент WHERE ... IN для SQLite.Swift
Я спросил, как сделать ГДЕ... В быстро.
Теперь, как мне отфильтровать необязательные выражения?
У меня есть версионная база данных, которая позволяет мне добавлять столбцы в таблицы после ее создания. И для этого я создал колонку с
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
который представляет собой массив разыскиваемых тегов времени. Я старался
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>'