Ios Swift SQLite SQL计数

Ios Swift SQLite SQL计数,ios,sqlite,swift,int32,Ios,Sqlite,Swift,Int32,在使用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: n

在使用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?的值未展开”)


有什么线索吗?

您在这个函数的开头声明
nRows
Int32
,而不是
Int32?
。同时,
results?.intForColumnIndex(0)
的结果返回
Int32?
,这是由于可选的链接(可能还由于
intForColumnIndex()的事实)
可能会返回一个可选选项)

您必须更改您的声明:

var nRows: Int32?
或者使用
如果
分配:

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

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

尝试这样的语句

SELECT count() FROM contacts
注意计数语法中没有“*”的部分