如何在Swift 3中创建一个缓存的NSNumberFormatter?

问题描述:

我想知道如何在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?

我已经解决了这个问题;

我创建我的缓存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)) 

谢谢。