2015-04-14 4 views
1

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

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

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

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

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

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

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

ответ

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 
Смежные вопросы