2017-03-23 21 views
3

これが可能かどうかわかりません。しかし、私はこれをしたい:Swift:ローカル変数注入を使用した動的文字列

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を使用してみましたが、これが可能かどうかはわかりません。

誰でもこれを行いますか?

+0

関連:[Swiftでローカライズされた文字列を書式設定する方法](http://stackoverflow.com/questions/35316655/how-to-format-localised-strings-in-swift) –

答えて

4

全く可能

あなたはリテラルではなく、文字列の初期化子を使用したいと思います。

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

あなたがここに書式指定子の様々なを使用することができます:あなたはこのようなあなたのテンプレートを持っている必要がありますあなたのlocalizable.stringsファイルで

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 

。すべての可能性についてドキュメントをチェックしてください。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

+5

'' Build%@、%ld "'をうまく使うとクラッシュします:) –

+0

素晴らしい点。 –

+1

ありがとうございました。それが客観的なCの方法です。私はすでにそれをする方法を知っているはずだったはずです。しかし、Swiftが文字列補間を行う方法に近い方法を見つけることを望んでいました。読んでみると、スウィフトはどんな種類の機能を提供するのではなく、文法的な砂糖を使ってそれを扱うように見えます。だから私は古風な方法で行く必要があります:-)私はSwiftが実際にしているように見える 'String(stringWithInterpolation:)'などを調べました。 – drekka

関連する問題