Caching 如何在Swift 3中创建缓存的NSNumberFormatter?
我想知道如何在Swift 3中创建缓存的NSNumberFormatter(NumberFormatter) 这是我通过搜索GIST找到的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)->())? =
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))
谢谢