Как создать NSString, используя скопированные фрагменты кода из моего собственного приложения, которые затем просматриваются в элементе управления TextView в Objective-C

#ios #objective-c #nsstring

#iOS #objective-c #nsstring

Вопрос:

Я немного новичок, но сделал поиск в Google и здесь, в стеке, но без результатов, которые помогли мне решить эту проблему. Я взял некоторые Objective-C через Lynda.com курсы с Саймоном Аллардайсом, которые были отличной отправной точкой, но то, что мне нужно сделать, это:

Я пишу простое демонстрационное / справочное приложение, в котором есть множество элементов управления в интерфейсе (UIButton, UISwitch и т. Д.). У меня также есть справа элемент управления TextView. Например, когда пользователь нажимает кнопку, я хочу показать код, который я использовал для выполнения действий в методе, как своего рода ссылку «как» или «Как я это сделал» для себя.

Я пробовал:

NSString *myCode = @»скопированный код, вставленный сюда»;

Но я получаю предупреждение, которое мне непонятно. Я подумал, что, возможно, мне нужно использовать метод ‘stringWithFormat’ для NSString, но это тоже не сработало. Итак, как я могу скопировать фрагменты кода в переменную NSString, чтобы я мог ссылаться на него в своем приложении во время выполнения, показывая текст в элементе управления TextView?

Спасибо

Комментарии:

1. Если я правильно понял, вам нужно, как установить заполнитель для вашего UITextView?

2. Я не знаю ничего, что могло бы преобразовать код в строку. Вам придется это жестко запрограммировать.

3. «Но я получаю предупреждение, которое мне непонятно». Какое предупреждение? «Я подумал, что, возможно, мне нужно использовать… но это тоже не сработало. » Откуда вы знаете , что это не сработало? Чего вы ожидали, и что произошло вместо этого? Простое выражение «Это не работает» никому не поможет вам помочь.

Ответ №1:

В коде нет ничего особенного. Это просто текст, и вы можете легко поместить его в строку. Единственное, на что вам нужно обратить внимание, это специальные символы, такие как кавычки и окончания строк. Вам нужно будет экранировать кавычки обратной косой чертой, чтобы кавычки интерпретировались как часть строки, а не как конец строки. Аналогично, используйте соответствующую escape-последовательность для окончаний строк.

Итак, если ваш код выглядит так:

 if (self.label) {
    self.label.text = @"Hello, world!";
}
  

вы должны сделать что-то вроде этого:

 NSString *codeString = @"if (self.label) {nself.label.text = @"Hello, world!";n}"
  

Комментарии:

1. Я попробовал предложенный вами подход, Калеб, но положительных результатов не получил. Я поместил » перед каждой двойной кавычкой, где они находятся в строках исходного кода, и ‘ n’

2. Я попытался поместить escape-символы » перед любыми символами, заключенными в двойные кавычки, а также поместить ‘ n’ в конце / после символов, где обычно должен быть crlf, но он все еще не работает. Что, если я сохраню код в текстовый файл, добавлю его в свой проект и каким-то образом свяжусь с ним? Кроме того, как мне это сделать? Я думаю, это было бы проще и менее утомительно.

3. Что именно не работает? В комментариях к вашему вопросу запрашивается сообщение об ошибке / предупреждении, которое вы получаете, но вы его не указали. В этом случае трудно действительно помочь.

4. Я получаю предупреждение, в котором говорится, что мне не хватает завершающего символа, но я, насколько я могу видеть, поместил escape после каждого «{«, «}» и двойных кавычек во фрагменте кода, который я использую для построения NSString . Я думал добавить файл RTF или TXT и прочитать его в var. Это вариант, и если да, то как мне это сделать?

5. Нет причин избегать фигурных скобок, и в любом случае escape-символ (`) идет перед символом, который вы пытаетесь экранировать, а не после. Отредактируйте свой вопрос, чтобы включить фактическое сообщение и фрагмент фактического кода , который вызывает сообщение. Нет причин, по которым вам нужно загружать код из отдельного файла только для решения этой проблемы, хотя, безусловно, можно создать строку из файла, если это имеет смысл для вашего приложения. В документации NSString довольно ясно, как это сделать.