Как мне поступить с предупреждением Неизвестная escape-последовательность '\ 040' в какао - PullRequest
1 голос
/ 14 сентября 2010

У меня появляется следующее предупреждение в нескольких приложениях, которые я запускаю в приложении Какао:

http://emberapp.com/splash6/images/unknown-escape-sequence-error/sizes/m.png

Я перепробовал все, что мог придумать, чтобы удалить ошибку, такую ​​как полное переписывание, копирование и вставка из другого подобного скрипта, у которого нет предупреждения и т. Д., Но я не могу от него избавиться. Может кто-нибудь сказать мне, где я могу пойти не так.

Необработанный код, который я использую:

NSString *theCellRefScript = [NSString stringWithFormat:@"tell application \"Numbers\"\n\
                                                tell document 1 \n\
                                                tell sheet \"%@\" \n\
                                                tell table \"%@\" \n\
                                                set value of cell \"%@\" to \%@\ \n\
                                                end tell \n\
                                                end tell \n\
                                                end tell \n\
                                                end tell ", theSheet, theTable, theCell, [theDistributionValues objectAtIndex:k]];

Ответы [ 4 ]

8 голосов
/ 14 сентября 2010

Во-первых, не открывайте себя для такого рода проблем.

Objective-C, как и все современные компиляторы C, автоматически объединяет строковые литералы, если они разделены пробелами. Вместо многострочного ужаса с последующими косыми чертами используйте:

 NSString *theCellRefScript = [NSString stringWithFormat:@"tell application \"Numbers\"\n"
                                                "tell document 1\n"
                                                "tell sheet \"%@\ \n"
                                                "tell table \"%@\ \n"
                                                "set value of cell \"%@\" to \%@ \n"
                                                "end tell\n"
                                                "end tell\n"
                                                "end tell\n"
                                                "end tell", theSheet, theTable, theCell, [theDistributionValues objectAtIndex:k]];
4 голосов
/ 14 сентября 2010

У вас есть завершающий пробел в конце строки после последнего обратного слеша. Он думает, что вы пытаетесь покинуть пробел, а не соединять строки.

edit: Я даже расскажу вам, откуда я знал, чтобы вы знали в следующий раз. Из текста ошибки «040» является восьмеричным числом. Преобразовать в десятичное число, 4 * 8 = 32 и ASCII 32 = пробел. Пробел не является допустимым escape-символом. Некоторые редакторы имеют режим «показывать пробелы», в котором отображаются вкладки и пробелы, чтобы помочь отсеять подобные проблемы.

0 голосов
/ 03 августа 2014

Это сводило меня с ума, потому что я просто не мог этого увидеть.В моем случае это оказалось довольно просто: в моем тексте справки я написал, что определенная опция пропустит все пробелы - и я привел пример,

"\ "

Конечно, это стало что-то вроде:

"\"\ \""

Это вообще не очевидно визуально ... но обратная косая черта в середине также должна быть экранирована:

"\"\\ \""

HTH

0 голосов
/ 14 сентября 2010

Обнаружена проблема, в строке было мошенническое пространство, начинающее заданное значение ячейки.Рабочая версия:

set value of cell \"%@\" to \%@\\n\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...