Это похоже на главный вопрос, но я просто не могу найти ответ нигде :-(Я могу сделать это в Objective C, но я застрял в Swift.В Swift, как вставить форматированное значение Int в строку?
Что мне нужно сделать:
- Возьмет целочисленное значение
- формата его в локализованной строку
- Вводит значение в другую строку, используя
stringWithFormat
эквивалентный метод (так как другая строка локализована, а также, который не показан в упрощенных примерах ниже)
Как это легко сделать в Objective 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];
Моя лучшая попытка сделать это в Swift - ошибка компилятора в последней строке:
// 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]'"
(В моем фактическом коде сообщение, в которое я хочу вставить значение точек, тоже локализуется, но я упростил этот пример, так как я получаю точно такую же ошибку в обоих случаях.)
Что мне здесь не хватает ..?
спасибо за любую помощь,
Erik
Это действительно довольно простой. Пожалуйста, прочитайте главу [Строки и символы] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html) в Swift Language Guide, абзац String Interpolation – vadian
Спасибо. Чтение сейчас ... –
А, да, я знаю об этом. Я должен уточнить в своем вопросе, что я не могу использовать String Interpolation, потому что сообщение с% @ в нем фактически локализовано, переведено на 8 разных языках. –