在带有SQLite的Swift iOS 8项目中,我试图使用SQL COUNT函数获取表中的行数。从我在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?的值未解包”。)

有什么线索吗?

最佳答案

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

您必须更改声明:

var nRows: Int32?

或使用iflet分配:
if let results = results where results.next() {
    nRows = results.intForColumnIndex(0)
}

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

关于ios - Swift SQLite SQL计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30585111/

10-15 07:19