今天将 Xcode 更新到 6.3 后,我终于能够完全删除 sqlite.swift 并重新安装它。在修复了大约 50 个由某些更改引起的错误之后,我剩下大约 15 个错误,所有这些错误都与新的 sqlite.swift 有关。 我已经搜索了新文档来涵盖语法更改,但无济于事。一些错误我在其他帖子中找到并且能够修复。
所以这个曾经有效的函数现在提示 ?在 delete() 之后?...错误消息是“Optional chain has no effect, expression already produces Int?”。建议删除 ?
func delete(id: Int) {
let rows = db[schema.tableName]
rows.filter(schema.id == id).delete()?
}
如果我删除 ?在 delete() 之后,它告诉我“不能不带参数调用‘delete’”。我搜索了源代码和代码完成,所有这些都没有显示任何参数。
同样在更新语句上我现在得到这个错误: 示例代码:
rows.filter(schema.id == id)
.update(schema.acctID <- acctID, schema.accessCode <- accessCode, schema.status <- 0)
错误:无法使用类型为“(Setter, Setter, Setter)”的参数列表调用“更新”
最佳答案
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
关于xcode - 最新版本的 SQLite.swift 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637992/