バックスラッシュをエスケープするからsqliteのを防ぎます
-
06-09-2019 - |
質問
私はsqliteのdatbaseでvarchar型の列を持っています。テキストの特定の行がUITextViewにおけるキャリッジリターンのために「\ nを」と共に使用されるバックスラッシュを有しています。値はSELECTを介してデータベースから読み取られるときに
myobject.text = [NSString stringWithUTF8String: (char *)sqlite3_column_text(selectstmt, 2)];
バックスラッシュはエスケープとのように見えるされます:
"\\n" rather than "\n"
改行として解釈しません。私はテキストで2 blackslashesを追加する場合は、2番目のもエスケープされるとのTextViewがサブビューとして追加されたとき、最終的に例外につながります:
キャッチされない例外によりに対しての終了アプリ「NSUnknownKeyException」、理由:「[のsetValue:forUndefinedKey:]:このクラスは、キー値コーディング準拠キーテストのためではない」
これらのエスケープを防止する方法はありますか私はそれを手動でクリーンアップする必要があるでしょう?
解決
バックスラッシュは、すぐそこの列のテキストには間違いありません - それは、バックスラッシュを(エスケープシーケンスとの混同を避けるために)示されている方法ですので、倍増として、あなたはそれを「見て」います。 SQLiteはは、あなたがそれを照会するとき、あなたがそこに置くのテキスト変更することではありません - しかし、間違いなく、データベース内のテキストを使用して、受信したいものではありません。
。何をする必要がある2つの文字のバックスラッシュ-nは、単一文字のnewline
にを変更することです、そしてあなたは、データベース内の(一度、すべてのために、または各クエリの場合)またはあなたのObjective-Cのコードの中のいずれかとすることができますあなたの正確なニーズに応じて、(各クエリで)ます。