1

COUNTSQLite を使用した Swift iOS 8 プロジェクトで、SQL関数を使用してテーブル内の行数を取得しようとしています。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

このようなステートメントで試してみてください。

SELECT count() FROM contacts

それは私のために働いた。「*」のないカウント構文に注意してください。

于 2017-07-15T17:31:46.130 に答える
1

この関数の先頭でnRowsis Int32、 notを宣言し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 に答える