UITextView: Как установить '\ n' из загруженной XML строки? - PullRequest
0 голосов
/ 26 июля 2010

Мне нужно указать «новую строку» в строке загружаемого файла XML.

Если я жестко закодирую строку:

myTextView.text = [NSString stringWithString:@"Line1 \nLine2 \nLine3"];

Отображает:

Line1
Line2
Line3

(как и ожидалось)

Но если я добавлю точную строку в мой XML-файл:

<someNode string="Line1 \nLine2 \nLine3" />

А затем загрузите его в UITableView, которое он отображает:

Line1 \nLine2 \nLine3

Я где-то читал, что символ '\ n' обрабатывается во время компиляции, это правда? Это объяснило бы поведение, которое я вижу.

Если это так, как еще можно определить новую строку в моей загруженной XML-строке и по-прежнему правильно обрабатывать ее в UITextView? Есть ли другой способ сделать это?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 26 июля 2010

Вы правы в том, что \n анализируется во время компиляции.

NSString *b = [a stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];

должен это сделать!

Кстати, вам может понадобиться сделать аналогичные замены для \\, \", \t и тому подобное.

0 голосов
/ 26 июля 2010

Да, преобразование \n в новую строку выполняется вашим компилятором.

В XML не может быть символа новой строки в значении атрибута из-за Нормализация значения атрибута . Любой перевод строки будет просто преобразован в пробел стандартным парсером. Однако у вас могут быть новые строки в элементах XML, поэтому, если вы можете изменить свой XML для использования элементов, а не атрибутов для хранения этого текста, тогда вы можете просто использовать буквальные новые строки в своем XML.

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

...