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

时间:2017-02-09 11:58:09

标签: caching swift3 string-formatting nsnumberformatter

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

这是我通过搜索Gists找到的;

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?

1 个答案:

答案 0 :(得分: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))

感谢。