Swift:带有局部变量注入的动态字符串

Swift: dynamic strings with local variable injections

不确定这是否可行。但我想这样做:

let version = "2.0.1"
let year = 2017
let version = "Build \(version), \(year)"

但是,我想从本地化文件获取版本字符串。即

let version = "2.0.1"
let year = 2017
let versionTemplate = NSLocalizedString("version.template", comment:"")
let version = ???? // Something done with versionTemplate

我已经研究过使用 NSExpression,但它是否可以做到这一点或如何做到这一点并不明显。

有人这样做吗?

完全有可能

您需要使用字符串初始值设定项而不是文字。

 let version = "2.0.1"
 let year = 2017
 let versionTemplate = String(format: NSLocalizedString("version.template", comment: ""), arguments: [version, year])
 // output: Build 2.0.1, 2017

在您的 localizable.strings 文件中,您需要这样的模板:

 "version.template" = "Build %@, %ld"

您可以在此处使用各种格式说明符。检查所有可能性的文档。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1