Swift:使用局部变量注入的动态字符串

时间:2017-03-23 12:45:57

标签: swift nslocalizedstring

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

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了,但是如果它可以做到这一点或者如何做就不明显。

有人这样做吗?

1 个答案:

答案 0 :(得分:6)

完全可能

您想要使用String初始化程序而不是文字。

 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