Создайте индекс по нескольким столбцам в sqlite.swift

Я обновил 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

Не могли бы вы помочь мне здесь?

Спасибо!!!


person finder    schedule 06.10.2017    source источник
comment
Вы нашли решение этой проблемы? Я тоже это вижу.   -  person TALE    schedule 03.05.2018


Ответы (1)


Хорошо, я разобрался с проблемой. Я добавляю это здесь, если кто-то еще столкнется с проблемой. В предыдущих версиях Swift вы могли передать массив вариативному параметру. С более новыми версиями 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)")
}

to:

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))
person TALE    schedule 03.05.2018