1

今天将 Xcode 更新到 6.3 后,我终于能够完全删除 sqlite.swift 并重新安装它。在修复了由某些变化引起的大约 50 个错误之后,我只剩下大约 15 个错误,所有这些都与新的 sqlite.swift 有关。我搜索了新文档以涵盖语法更改,但无济于事。我在其他帖子中发现了一些错误并且能够修复。

所以这个曾经工作的功能现在抱怨 ? 在 delete()?... 之后,错误消息是“可选链无效,表达式已经产生 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)”的参数列表调用“update”

4

1 回答 1

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
于 2015-04-14T21:59:55.443 回答