在Objective-C中显示特殊字符的问题

时间:2012-06-08 09:05:55

标签: iphone objective-c xcode cocoa-touch

我希望我的UILabel显示来自SQLite数据库的文本。 但它无法识别换行符“\ n” - 它只是在屏幕上打印出来,如“Hello \ n World”。

这是我从DB获取文本值的方法:

...
NSString *aDescription = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
myLabel.text = aDescription
...

有什么建议吗?

UPD : 这个问题不是如何在UILabel中显示多行。它是如何在SQLite中存储和稍后编码换行符。

3 个答案:

答案 0 :(得分:2)

您似乎保存了\n而不是换行符。

如果您使用SQLite编辑器,您可能希望使用换行符从textedit复制文本。

如果你不能在输入端解决它,你真的应该这样做,那么你需要用换行符替换文字\n

NSString *aDescription = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
myLabel.text = [aDescription stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];

答案 1 :(得分:1)

默认情况下,UILabel不允许换行。如果您希望换行有效,则必须将标签的行号设置为相当大的数字(并扩展其frame属性):

label.numberOfLines = 5;

或者,正如Matthias所说:

label.numberOfLines = 0;

允许标签根据需要显示多行。

答案 2 :(得分:0)

您的标签高度不足以打印2行数据,增加高度,并增加行数 lbl.numberOfLines = 2;