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

Caching 如何在Swift 3中创建缓存的NSNumberFormatter?,caching,swift3,string-formatting,nsnumberformatter,Caching,Swift3,String Formatting,Nsnumberformatter,我想知道如何在Swift 3中创建缓存的NSNumberFormatter(NumberFormatter) 这是我通过搜索GIST找到的 extension NumberFormatter { private static var cache:[String:NumberFormatter] = [:] static func numberFormatterForKey(key:String, initialize:((NumberFormatter)->())? =

我想知道如何在Swift 3中创建缓存的NSNumberFormatter(NumberFormatter)

这是我通过搜索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))
然后像这样使用它

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))
谢谢