2016-12-27 97 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