2

我在 sqlite 数据库中有一个 varchar 列。特定的文本行有一个反斜杠,它与“\n”一起用于 UITextView 中的回车。当通过 SELECT 从数据库中读取值时:

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

反斜杠被转义,看起来像:

"\\n" rather than "\n"

这不解释为回车。如果我在文本中添加两个黑斜线,第二个也将被转义并最终导致在将 textview 添加为子视图时出现异常:

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键值编码的键测试。”

有没有办法防止这些逃逸或者我需要手动清理它?

4

1 回答 1

3

反斜杠无疑就在列的文本中——您“看到”它是双倍的,因为这就是反斜杠的显示方式(以避免与转义序列混淆)。当您查询时, sqlite 不会更改您放在那里的文本——但可以说,数据库中的文本不是您想要接收的。

您需要做的是将两个字符 backslash-n 更改为单个字符newline,您可以在数据库中(一劳永逸,或在每个查询中)或在您的 Objective-C 代码中(在每个查询中) ) 取决于您的确切需求。

于 2009-05-31T16:53:02.437 回答