Документы для последней версии SQLite.swift

После обновления Xcode до 6.3 сегодня я, наконец, смог полностью удалить sqlite.swift и переустановить его. И после исправления около 50 ошибок, вызванных какими-то изменениями, осталось около 15 ошибок, и все они как-то связаны с новым sqlite.swift. Я искал новые документы, чтобы охватить изменения синтаксиса, но безрезультатно. Некоторые ошибки я нашел в других сообщениях и смог исправить.

Итак, эта функция, которая раньше работала, теперь жалуется на ? после удаления ()?... Сообщение об ошибке: «Необязательная цепочка не имеет эффекта, выражение уже производит Int?». Рекомендуется удалить?

func delete(id: Int) {
    let rows = db[schema.tableName]
    rows.filter(schema.id == id).delete()?
}

Если я удалю ? после удаления () он говорит мне «не может вызвать« удаление »без аргумента». Я искал исходный код и завершение кода, и все они не показывают никаких аргументов.

Также в заявлениях об обновлении я теперь получаю эту ошибку: Пример кода:

rows.filter(schema.id == id)
    .update(schema.acctID <- acctID, schema.accessCode <- accessCode, schema.status <- 0)

Ошибка: невозможно вызвать «обновление» со списком аргументов типа «(Setter, Setter, Setter)»


person Wayne Fulcher    schedule 14.04.2015    source источник


Ответы (1)


В Swift 1.2 удалена возможность принуждения с использованием завершающего ?. Вы можете использовать !, если оператор не должен завершаться ошибкой:

func delete(id: Int) {
    let rows = db[schema.tableName]
    rows.filter(schema.id == id).delete()!
}

Или вместо этого вы можете связать вызов delete() с членом кортежа:

rows.filter(schema.id == id).delete().changes

Это была постоянная проблема поддержки, поэтому интерфейс может измениться в ближайшем будущем.

Точно так же нужно исправить вызов update():

rows.filter(schema.id == id)
    .update(
        schema.acctID <- acctID,
        schema.accessCode <- accessCode,
        schema.status <- 0)! // or .changes
person stephencelis    schedule 14.04.2015