我在 sqlite 数据库中有一个 varchar 列。特定的文本行有一个反斜杠,它与“\n”一起用于 UITextView 中的回车符。当通过 SELECT 从数据库读取值时:
myobject.text = [NSString stringWithUTF8String: (char *)sqlite3_column_text(selectstmt, 2)];
反斜杠被转义,看起来像:
"\\n" rather than "\n"
这不会解释为回车。如果我在文本中添加两个黑斜杠,第二个斜杠也会被转义,并最终在将文本视图添加为子视图时导致异常:
由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类不符合键测试的键值编码。”
有没有办法防止这些逃逸或者我需要手动清理它?
反斜杠无疑就在列的文本中——您“看到”它是双倍的,因为这就是反斜杠的显示方式(以避免与转义序列混淆)。 sqlite 不是altering查询时放置在那里的文本 - 但可以说,数据库中的文本不是您想要接收的文本。
您需要做的是将两个字符反斜杠-n更改为单个字符newline
,您可以在数据库中(一劳永逸,或在每个查询上)或在 Objective-C 代码(在每个查询上)中实现这一点,具体取决于您的具体需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)