1

dbtable から読み取りを行っているときに、テーブルの特定の位置でエラーが発生します。同じテーブルから既に読み取ることができたので、私のSQLは問題ありませんが、特定の行でエラーが発生し、このエラーの処理方法を知りたいです。私は自分の db-issue を解決するための解決策を探しているわけではありません。エラーの処理を探しているだけなので、クラッシュしません。

私は次のコードを持っています:

let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
if unsafepointer != nil {
    sText=String.fromCString(unsafepointer)! // <<<<<< ERROR
} else {
   sText="unsafe text pointer is nil !";
}

エラーが発生します:

「致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました」

でマークされた行で<<<<<< ERROR

アンセーフ ポインターの値はnil次のとおりです。

pointerValue : 2068355072

アプリがクラッシュしないように、このエラーを処理するにはどうすればよいですか?

4

3 に答える 3

3

別の可能な解決策は次のとおりです。

let unsafepointer=UnsafePointer<CChar>(sqlite3_column_text(statement, 2));
var sText = "unsafe text pointer is nil !";
if unsafepointer != nil{
    if let text = String.fromCString(unsafepointer) as String?{
        sText = text;
    }    
}
于 2016-05-15T12:37:10.760 に答える