2009-05-31 147 views
2

我在sqlite數據庫中有一個varchar列。一行特定的文本有一個反斜槓,與「\ n」一起用於UITextView中的回車。當值從數據庫中通過選擇讀取:防止sqlite轉義反斜槓

myobject.text = [NSString stringWithUTF8String: (char *)sqlite3_column_text(selectstmt, 2)]; 

反斜槓逃了出來,看起來像:

"\\n" rather than "\n" 

不解釋爲一個回車。如果我在文本中添加兩個黑色斜線,第二個也會被轉義並最終導致在將textview添加爲子視圖時發生異常:

由於未捕獲的異常'NSUnknownKeyException',原因:'[setValue: forUndefinedKey:]:該類不是密鑰測試的關鍵值編碼。「

有沒有辦法來防止這些逃生或我需要手動清理它?

回答

3

反斜槓無疑就在列的文本中 - 您「看到」它翻倍,因爲反斜槓顯示的方式(避免與轉義序列混淆)。 sqlite不是改變了當你查詢它時放在那裏的文本 - 但可以說,數據庫中的文本不是你想要接收的。

您需要做的是將兩個字符backslash-n更改爲單個字符newline,您可以在數據庫中(一次或全部,或在每個查詢中)或在您的目標-C代碼(每個查詢)取決於您的確切需求。

+0

你是什麼意思的「單字符換行」?我明白你對雙反斜槓的看法。但是,如果我在數據庫中使用相同的文本並將其直接作爲測試分配給UITextView,則它將使用回車符進行呈現。從數據庫中出來顯示文字「\ n」並且沒有回車。有什麼不同? – 4thSpace 2009-05-31 17:25:25