找不到接受类型为“([Int], Expression<String>)”的参数列表的 'contains' 的重载

Cannot find an overload for 'contains' that accepts an argument list of type '([Int], Expression<String>)'

我用SQLite.swift

我试过表达式:

userTable.filter(contains([1, 2, 3, 4, 5], entryId))

来自示例。但是我收到以下错误:

Cannot find an overload for 'contains' that accepts an argument list of type '([Int], Expression<String>)'

我怎样才能让它工作?

SQLite.swift 与 Swift 本身一样,是类型安全的,因此您筛选的列表达式必须与您正在检查的数组的类型相同。

entryId 似乎是 Expression<String> 类型,这类似于编写以下香草 Swift:

contains([1, 2, 3, 4, 5], "1")

这实际上失败了,并出现了非常相似的错误消息。

Cannot find an overload for 'contains' that accepts an argument list of type '([Int], String)'

如果您希望 entryId 是一个 Int,那么它应该定义为:

let entryId = Expression<Int>("entryId")

进行此更改后,contains 应该可以正常工作。