Objective c 如何防止xcode处理<;##&燃气轮机;作为代码段占位符

Objective c 如何防止xcode处理<;##&燃气轮机;作为代码段占位符,objective-c,xcode,token,code-snippets,Objective C,Xcode,Token,Code Snippets,我想在目标C程序中包含一个文本字符串。但是,Xcode会自动替换字符串,认为它应该是代码段中使用的占位符 e、 g NSString*模式=@“” 尝试将其放入Xcode,它将作为foo的占位符重新显示 在实际的程序中,字符串是这样的RE,令人惊讶的是,代码实际上是按预期工作的-问题只会在Xcode中显示出来。真正的问题是,这会造成一种脆弱的情况,在编辑器中很容易导致文本被意外替换 作为一种解决方法,我可以从字符串的各个部分构造字符串 NSString *p1 = @"<#(.*)";

我想在目标C程序中包含一个文本字符串。但是,Xcode会自动替换字符串,认为它应该是代码段中使用的占位符

e、 g

NSString*模式=@“”
尝试将其放入Xcode,它将作为foo的占位符重新显示

在实际的程序中,字符串是这样的RE
,令人惊讶的是,代码实际上是按预期工作的-问题只会在Xcode中显示出来。真正的问题是,这会造成一种脆弱的情况,在编辑器中很容易导致文本被意外替换

作为一种解决方法,我可以从字符串的各个部分构造字符串

NSString *p1 = @"<#(.*)";
NSString *p2 = @"#>";
NSString *pattern = [NSString stringWithFormat:@"%@%@",p1,p2];
NSString*p1=@”;
NSString*模式=[NSString stringWithFormat:@“%@%@”,p1,p2];
但这并不十分令人满意


有人知道更好的方法来覆盖Xcode中的这种行为吗?

您可以通过利用字符串连接来避免这种不良行为,例如

NSString *str = @"<" "#foo#" ">";
NSString*str=@”;

Swift 4,Xcode 9-您只需分离或替换一个字符即可使序列正常工作。还是不完美

字符串连接:

let pattern = "<" + "#foo#>"
有趣的事实:将图案打印到控制台显示为占位符,
foo

不那么有趣的事实是:你不能把图案打印到日志上。由于它是通过连接或其他运行时处理创建的,因此它不符合日志消息中所需的
StaticString
类型

更新:您可以在日志中使用该模式(不过,它同样显示为占位符-argh!)。要解决
StaticString
问题,可以在日志语句中使用
%@

let pattern = "<" + "#foo#>" // or whichever version you like best
os_log("%@", log: .default, type: .debug, pattern)
let pattern=”“//或您最喜欢的版本
操作系统日志(“%@”,日志:。默认值,类型:。调试,模式)

@Tommy Xcode似乎对这两种方式都不在意,而且它更干净,没有所有额外的“@”。那么我想我在Objective-C语法更改方面落后了。不管怎样,你都得到了我的+1。你可以用这种方式连接Objective-C文本字符串和C文本字符串。根据我刚刚做的一个测试,我相信它总是使用第一个元素的类型。
let pattern = "\("<")#foo#>"
let pattern = "%003c#foo#>".removingPercentEncoding
let pattern = "<" + "#foo#>" // or whichever version you like best
os_log("%@", log: .default, type: .debug, pattern)