2017-02-09 17 views
0

Мне интересно, как создать кешированный NSNumberFormatter (NumberFormatter) в Swift 3?Как создать кешированный NSNumberFormatter в Swift 3?

Это то, что я нашел через поиск 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 
     } 
    } 
} 

Но я не уверен, как его использовать; или если есть лучшее решение.

Таким образом, как создать кешированный NSNumberFormatter в Swift 3?

ответ

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

Спасибо.

 Смежные вопросы

  • Нет связанных вопросов^_^