2012-06-08 2 views
0

Мне нужен текст отображения UILabel из базы данных SQLite. Но он не распознает символ новой строки «\ n» - он просто печатает его на экране, например «Hello \ n World».Проблемы с отображением специальных символов в Objective-C

Это, как я получаю текстовое значение из БД:

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

Любые предложения?

UPD: Этот вопрос заключается не в том, как отображать несколько строк в UILabel. Это как сохранить, а затем закодировать символ новой строки в SQLite.

+2

Как вы сохранить '\ п 'в базе данных в первую очередь. Если вы использовали редактирование SQLite и просто введите '\ n', оно будет сохранено буквально как' \ n', а не как символ новой строки, которым вы хотите. – rckoenes

+0

Да, я сохраняю его буквально как \ n. Что я могу использовать вместо этого, чтобы сохранить символ новой строки? – Oleg

ответ

2

Кажется, что вы сохраняете \n, а не символ новой строки.

Если вы используете редактор SQLite, вы можете скопировать текст из текстового текста с символом новой строки.

Если вы не можете решить ее на во входной стороне, которая вам действительно надо делать, то вам необходимо заменить буквальный \n с символом новой строки:

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

Отлично! Спасибо огромное! Оно работает! – Oleg

1

UILabel, по умолчанию, не допускает разрывов строк. Если вы хотите новой строки, чтобы быть эффективным, вы должны установить номер строки наклеек на достаточно большом количестве (и продлить его свойство frame также):

label.numberOfLines = 5; 

Или, как это было предложено Matthias:

label.numberOfLines = 0; 

, позволяя ярлыку отображать столько строк, сколько необходимо.

+1

или просто 0, как в «столько строк, сколько необходимо» –

+0

Да, это также возможно. Я уточню свой ответ. –

+0

Вопрос в том, почему отображается '\ n', а не почему он не отображается на нескольких линиях. – rckoenes

0

Высота вашей метки не достаточна для печати данных в 2 строках, увеличения высоты и увеличения количества строк lbl.numberOfLines = 2;

Смежные вопросы