我使用的是swift字符串(format:…),需要使用三元运算符计算格式字符串本身的值,类似于这样,但它不编译。

 String(format: "Audio: \(numChannels>1?"Stereo": "Mono")")

在Objective-C中,我可以这样做:
 [NSString stringWithFormat:@"Audio: %@",  numChannels > 1 ? @"Stereo" : @"Mono"];

在没有中间变量的情况下,如何在Swift中实现同样的优雅?

最佳答案

由于条件表达式中运算符周围缺少空格,编译器将1?"Stereo"误解为可选链接。应该是

String(format: "Audio: \(numChannels>1 ? "Stereo" : "Mono")")

相反。但是,由于格式字符串根本没有占位符,这相当于
"Audio: \(numChannels > 1 ? "Stereo" : "Mono")"

09-27 18:31