2015-06-01 4 views
1

В проекте Swift iOS 8 с SQLite я пытаюсь получить количество строк в таблице, используя функцию SQL COUNT. Из приведенных примеров, которые я нашел в C, я пришел с этим кодом:Swift SQLite SQL Count

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? не разворачивал.»

Любые подсказки?

ответ

1

Вы объявляете в начале этой функции, что nRows является Int32, не Int32?. Между тем, в результате results?.intForColumnIndex(0) возвращается Int32? за счет дополнительного сцепления (и, возможно, дополнительно из-за к e факт, что intForColumnIndex() может вернуть необязательный).

Вы должны либо изменить свое заявление:

var nRows: Int32? 

Или используйте if - let для назначения:

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

(Вы также можете принудительно разворачивать, но это безопаснее, чтобы избежать этого.)

0

Попробуйте сделать заявление следующим образом.

SELECT count() FROM contacts 

Это сработало для меня. Обратите внимание на синтаксис подсчета без «*».