我将sqlite.swift更新为版本0.11.4,当我创建包含两列的索引时,我的编译器会重新编译错误。
在我使用命令之前
try db.run(table.createIndex([column1, column2], unique: true, ifNotExists: true))
更新后,它不再起作用了。我应该用Expressible。但我没有那么进步。
Contextual type 'Expressible' cannot be used with array literal
你能帮我一把吗?
感谢!!!
答案 0 :(得分:0)
好的,我弄明白了这个问题。我在这里添加它以防其他人遇到问题。在以前的Swift版本中,您可以将数组传递给variadic参数。使用较新版本的Swift,您不能再这样做了。我不得不改变我的代码:
do {
try db.run(table.createIndex([identifier], ifNotExists: true))
} catch let error {
Log.e("DB: Unable to create index for identifier. Error: \(error.localizedDescription)")
}
为:
do {
try db.run(table.createIndex(identifier, ifNotExists: true))
} catch let error {
Log.e("DB: Unable to create index for identifier. Error: \(error.localizedDescription)")
}
如果您需要传递多个参数,请用逗号分隔它们。
try db.run(table.createIndex(identifier1, identifier2, identifier3, ifNotExists: true))