2016-12-27 138 views
0

我想本地化字符串,其中包含像1..2范围。我使用String.localizedStringWithFormatString.localizedStringWithFormat返回错误的结果

func testLocalizableString() -> String { 
    let lowerBound = 1 
    let upperBound = 2 
    return String.localizedStringWithFormat(
     NSLocalizedString("Unit.Meters.Range", value:"%d-%dm", comment: ""), 
     [lowerBound, upperBound] 
    ) 
} 

但是,我得到了奇怪的结果是: “103,413,600-0m”。

如果我只使用一个参数(只是“%dm”,而不是“%d-%dm”)并且只传递一个数字,那么一切都很好。

我的代码有什么问题,以及如何用CVarArg参数正确地格式化可本地化的字符串?

回答

0

String.localizedStringWithFormat(_ format: String, _ arguments: CVarArg...) 

第二个参数是这意味着你必须通过指定类型的零个或多个 参数,而不是阵列中的可变参数参数,

func testLocalizableString() -> String { 
    let lowerBound = 1 
    let upperBound = 2 
    return String.localizedStringWithFormat(
     NSLocalizedString("Unit.Meters.Range", value:"%ld-%ldm", comment: ""), 
     lowerBound, upperBound 
    ) 
} 

Int的格式说明符也是%ld,而不是%d