我在Cocoa应用程序中运行的一些Applescripts中弹出以下警告:
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]];
答案 0 :(得分:8)
首先不要让自己陷入这种问题。
与所有现代C编译器一样,Objective-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]];
答案 1 :(得分:4)
在最后一个反斜杠之后,在行尾有一个尾随空格。它认为你正试图逃离一个空间,而不是连接线。
编辑:我甚至会告诉你我是怎么知道的,所以下次你知道。从错误文本中,'040'是八进制数。转换为十进制,4 * 8 = 32,ASCII 32 =空格。空格不是有效的转义字符。有些编辑有一个“显示空白”模式,它会显示标签和空格,以帮助清除这样的问题。
答案 2 :(得分:0)
set value of cell \"%@\" to \%@\\n\
答案 3 :(得分:0)
这让我疯了,因为我真的无法看到它。在我的情况下,它变得相当简单:在我的帮助文本中,我写过某个选项会逃避所有空格 - 我举了一个例子,
"\ "
当然这就像是:
"\"\ \""
它在视觉上并不明显......但中间的反斜杠也需要转义:
"\"\\ \""
HTH