Swift 字符串格式与 Objective-C
Swift String format vs Objective-C
我正在使用 swift String(format:...) 并且需要使用三元运算符计算格式字符串本身中的值,类似这样但它无法编译。
String(format: "Audio: \(numChannels>1?"Stereo": "Mono")")
在 Objective-C 中,我可以这样做:
[NSString stringWithFormat:@"Audio: %@", numChannels > 1 ? @"Stereo" : @"Mono"];
如何在没有中间变量的情况下在 Swift 中实现同样的优雅?
一个选项是使用带有占位符的 String(format:) 和条件表达式作为占位符的参数
String(format: "Audio = %@", numChannels > 1 ? "Stereo" : "Mono")
由于条件表达式中运算符周围缺少空格,编译器将 1?"Stereo"
错误解释为可选链接。应该是
String(format: "Audio: \(numChannels>1 ? "Stereo" : "Mono")")
相反。但是,由于格式字符串根本没有占位符,这相当于
"Audio: \(numChannels > 1 ? "Stereo" : "Mono")"
我正在使用 swift String(format:...) 并且需要使用三元运算符计算格式字符串本身中的值,类似这样但它无法编译。
String(format: "Audio: \(numChannels>1?"Stereo": "Mono")")
在 Objective-C 中,我可以这样做:
[NSString stringWithFormat:@"Audio: %@", numChannels > 1 ? @"Stereo" : @"Mono"];
如何在没有中间变量的情况下在 Swift 中实现同样的优雅?
一个选项是使用带有占位符的 String(format:) 和条件表达式作为占位符的参数
String(format: "Audio = %@", numChannels > 1 ? "Stereo" : "Mono")
由于条件表达式中运算符周围缺少空格,编译器将 1?"Stereo"
错误解释为可选链接。应该是
String(format: "Audio: \(numChannels>1 ? "Stereo" : "Mono")")
相反。但是,由于格式字符串根本没有占位符,这相当于
"Audio: \(numChannels > 1 ? "Stereo" : "Mono")"