Swift中的localizeWithFormat和variadic参数

我正在尝试创建一个String扩展来执行类似的操作
"My name is %@. I am %d years old".localizeWithFormat("John",30)

看起来像这样

extension String {
  func localizeWithFormat(arguments: CVarArgType...) -> String {
    return String.localizedStringWithFormat(
      NSLocalizedString(self,comment: ""),getVaList(arguments))
  }
}

它给我以下编译错误

Type CVaListPointer does not conform to protocol CVargType

任何人都知道如何解决这个编译错误?

这应该很简单,只需更改您的参数如下:
extension String {
    func localizeWithFormat(name:String,age:Int,comment:String = "") -> String {
        return String.localizedStringWithFormat( NSLocalizedString(self,comment: comment),name,age)
    }
}

"My name is %@. I am %d years old".localizeWithFormat("John",age: 30)  // "My name is John. I am 30 years old"

init(format:locale:arguments:)

extension String {
    func localizeWithFormat(args: CVarArgType...) -> String {
        return String(format: self,locale: nil,arguments: args)
    }
    func localizeWithFormat(local:NSLocale?,args: CVarArgType...) -> String {
        return String(format: self,locale: local,arguments: args)
    }
}
let myTest1 = "My name is %@. I am %d years old".localizeWithFormat(NSLocale.currentLocale(),args: "John",30)
let myTest2 = "My name is %@. I am %d years old".localizeWithFormat("John",30)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...