当我尝试使用 NSLog 时:

NSLog(@"one" @"two" @"three");

这有效并在控制台中打印 onetwothree。但是当我尝试这样使用时
NSString *s = [NSString stringWithFormat:@"three"];
NSLog(@"one" @"two" s);

以上不起作用,我收到一个编译时错误“预期的')'”。我不知道该怎么做。

有什么帮助吗?

附言我正在尝试使用 XcodeColors,我必须像上面一样为 NSLog 提供参数。所以不要回答像下面那样使用它。我知道这行得通。但我必须像上面一样将参数传递给 NSLog。
NSString *s = [NSString stringWithFormat:@"%@ %@ %@", @"one", @"two", @"three"];
NSLog(s, nil);

编辑 :

我可以像这样使用 NSLog 来获得我想要的结果:
NSString *s = @"ss";
NSLog(@"one" @"two" @"%@",s);

这引出了我的另一个问题。我想为 NSLog 制作一个宏。宏看起来像:
LOG_X(val) NSLog(@"xx" @"yy" @"%@",val @"zz")

现在当以下工作时:
LOG_X(@"one")
LOG_X(@"one" @"two" @"three")

但以下不起作用
NSString *s = @"one two three";
LOG_X(s);

它给了我同样的错误“预期')'”

最佳答案

如果要打印 NSStringNSLog 变量的内容,则需要将其视为格式化字符串。

所以而不是:
NSLog(@"one" @"two" s);
用:
NSLog(@"one" @"two" @"%@", s);
附加:

您必须在宏的末尾插入逗号和 val。它应该看起来像:
#define LOG_X(val) NSLog(@"xx" @"yy" @"%@" @"zz", val)

关于ios - 如何将 NSString 放入带有多个参数的 NSLog 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16879296/

10-12 22:27