質問

私は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のコードの中のいずれかとすることができますあなたの正確なニーズに応じて、(各クエリで)ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top