2017-02-09 30 views
0

我想知道如何在Swift 3中創建一個緩存的NSNumberFormatter(NumberFormatter)?如何在Swift 3中創建一個緩存的NSNumberFormatter?

這是我通過搜索Gist發現的;

extension NumberFormatter { 
    private static var cache:[String:NumberFormatter] = [:] 

    static func numberFormatterForKey(key:String, initialize:((NumberFormatter)->())? = nil) -> NumberFormatter { 
     if let formatter = NumberFormatter.cache[key] { 
      return formatter 
     } else { 
      let formatter = NumberFormatter() 
      NumberFormatter.cache[key] = formatter 
      initialize?(formatter) 
      return formatter 
     } 
    } 
} 

但我不知道如何使用它;或者如果有更好的解決方案。

因此,如何在Swift 3中創建緩存的NSNumberFormatter?

回答

0

我已經解決了這個問題;

我創建我的緩存nsnumberformatter像這樣;

struct ObjectCache { 
    static let currencyRateFormatter: NumberFormatter = { 
     var numberFormatter = NumberFormatter() 
     numberFormatter.locale = Locale(identifier: "en_US") 
     numberFormatter.numberStyle = .currency 
     numberFormatter.minimumFractionDigits = 0 
     numberFormatter.maximumFractionDigits = 0 
     numberFormatter.alwaysShowsDecimalSeparator = false 
     return numberFormatter 
    }() 
} 

然後像這樣使用它;

self.myCashLbl.text = ObjectCache.currencyRateFormatter.string(from: NSNumber(integerLiteral: player.cash)) 

謝謝。

相關問題