我正在尝试创建一个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)