這似乎是一個超級基本問題,但我似乎無法在別處找到了答案:-(我能做到這一點在Objective C,但我被陷在斯威夫特。在Swift中,如何將格式化的Int值插入到String中?
我需要什麼要做到:
- 的一個整數值
- 格式它變成一個本地化字符串
- 注入的值成使用
stringWithFormat
等效方法(因爲該另一個串被局部化,以及,未示出另一串在下面的簡化例子中)
它是如何在目標C容易做到 - 這工作:
// points is of type NSNumber *
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *ptsString = [formatter stringFromNumber:points];
NSString *message = [NSString stringWithFormat:@"You've earned %@ points", ptsString];
在斯威夫特這樣做我的最好的嘗試 - 在最後一行編譯器錯誤:
// points is of type Int
let formatter = NSNumberFormatter()
formatter.locale = NSLocale.currentLocale()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
let ptsString = formatter.stringFromNumber(points)!
let message = String(format: "You've earned %@ points", arguments: ptsString)
我在最後一行的Xcode中收到以下錯誤:
"Cannot convert value of type 'String' to expected argument type '[CVarArgType]'"
(在我的實際代碼,到了我想插入點值的該消息本身定位爲好,但我已經簡化這個例子中,我得到確切同樣的錯誤在這兩種情況下。)
我在這裏想念什麼..?
感謝這麼多的幫助,
埃裏克
這的確是非常基本的。請閱讀Swift語言指南中的[字符串和字符](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html)章節字符串插值 – vadian
謝謝。現在正在讀... –
啊,是的,我知道這件事。我應該在我的問題中澄清,我不能使用字符串插值,因爲其中含有%@的消息實際上是本地化的,並以8種不同的語言翻譯。 –