我在sqlite数据库中有一个varchar列。特定的一行文本有一个反斜杠,它与“\ n”一起用于UITextView中的回车。通过SELECT:
从数据库中读取值时myobject.text = [NSString stringWithUTF8String: (char *)sqlite3_column_text(selectstmt, 2)];
反斜杠已转义,如下所示:
"\\n" rather than "\n"
不解释为回车。如果我在文本中添加两个黑色斜杠,第二个也将被转义,并在textview作为子视图添加时最终导致异常:
由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是密钥值编码兼容的密钥测试。'
有没有办法防止这些逃逸,还是我需要手动清理它?
答案 0 :(得分:3)
反斜杠毫无疑问就在列的文本中 - 你正在“看到”它加倍,因为这是反斜杠的显示方式(以避免与转义序列混淆)。当您查询时,sqlite不会更改您放在那里的文本 - 但可以说,数据库中的文本不是您想要接收的文本。
您需要做的是将两个字符反斜杠-n更改为单个字符newline
,您可以在数据库中(一劳永逸,或在每个查询中)或在您的objective-C代码(在每个查询上),具体取决于您的确切需求。