質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

642閲覧

Swift SQLiteからnilのデータを取得した時のエラー処理について

ataru2222

総合スコア272

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2023/03/04 14:04

実現したいこと

SQLiteからnilのデータを取得した時のエラー処理を行いたい

発生している問題・エラーメッセージ

現在、SQLiteからデータを取得しているのですが、その中でnilとなってしまった時のエラー処理を解決したいのですが、次のコードではcatchブロックに入ってくれずに、そのまま★★★★★の行でクラッシュします。

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

該当のソースコード

Swift

1results.append([]) 2results[0].append(String(cString:sqlite3_column_text(stmt, 0))) 3do { 4 let test = try String(cString:sqlite3_column_text(stmt, 1)) //★★★★★エラー 5 } catch { 6 results[0].append("") 7}

試したこと

nil判定できれば何とかなると思うのですが、
SQLiteで取得しているデータだからだと思うのですが以下のようなコードでは上に書いたエラーが出てしまいます。
if String(cString:sqlite3_column_text(stmt, 1)) == nil {

}

nil判定できないのでdo-try-catchで対応したいと思うのですが、落ちることもなくそのままクラッシュしてしまうのですが、このような場合どうしたらcatchブロックに入れられるでしょうか?
ちなみに、黄色の警告が出てしまっています。
No calls to throwing functions occur within 'try' expression
(訳: 「try」式内でスロー関数の呼び出しが発生しない)
'catch' block is unreachable because no errors are thrown in 'do' block
(訳「do」ブロックでエラーがスローされないため、「catch」ブロックに到達できません)
イメージ説明

こちらについてお分かりになられる方いらっしゃいましたらご教授ください。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

こちらのサイトを参考にして
https://softmoco.com/sqlite/swift-sqlite-select.php

こちらのコードでnil判定できました。
if sqlite3_column_type(stmt, 1) != SQLITE_NULL {
results[0].append(String(cString:sqlite3_column_text(stmt, 1)))
} else {
results[0].append("")
}

投稿2023/03/04 14:20

ataru2222

総合スコア272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問