1

在使用 SQLite 的 Swift iOS 8 项目中,我试图使用 SQLCOUNT函数获取表中的行数。从我在 C 中找到的示例中,我得到了以下代码:

var nRows: Int32 = 0

func getNquestions() {
    let querySQL = "SELECT COUNT(*) from table"
    let results:FMResultSet? = myDatabase.executeQuery(querySQL,withArgumentsInArray: nil)
    if results?.next() == true {
        nRows = results?.intForColumnIndex(0) //STATEMENT GENERATING ERROR
    }
}

在收到类型不匹配错误后,我将 nRows 的定义更改为 Int32,但我不断收到编译错误(这次是“可选类型 'Int32 的值?未解包。”

有什么线索吗?

4

2 回答 2

1

你在这个函数的开头声明的nRowsInt32,不是Int32?。同时,由于可选链接而results?.intForColumnIndex(0)返回的结果Int32?(并且可能另外由于可能返回可选的事实intForColumnIndex())。

您必须更改您的声明:

var nRows: Int32?

或者使用if–<code>let 分配:

if let results = results where results.next() {
    nRows = results.intForColumnIndex(0)
}

(您也可以强制展开,但避免这样做更安全。)

于 2015-06-01T23:59:05.527 回答
1

试试这样的陈述。

SELECT count() FROM contacts

它对我有用。注意不带“*”的计数语法。

于 2017-07-15T17:31:46.130 回答