0

我正在使用某种货币格式将货币符号/样式设置为用户的本地设置。这是我的代码。我认为它工作正常。它位于我的viewDidLoad中。在多种方法中使用相同的货币格式

let currencyFormat = NumberFormatter()  
currencyFormat.locale = NSLocale.current 
currencyFormat.usesGroupingSeparator = true 
currencyFormat.numberStyle = NumberFormatter.Style.currency 
... 
labelTotalAmount.text = currencyFormat.string(for: totalAmount) 

问题是,我想在其他两种不同的方法中使用相同的格式。每当我想要格式化时,重复每种方法的格式似乎都是一种浪费。

有没有一种方法来设置格式一次,并让它记住类的每个方法中的设置?

我正在使用Swift 3.我很感谢您可以给予的任何帮助!

+0

使用类或全局值或单例。 – JAL

+0

http://stackoverflow.com/questions/24960621/struggling-with-nsnumberformatter-in-swift-for-currency/42957137#42957137 –

+0

仅供参考 - 无需区域设置为当前语言环境,因为这是默认的。 – rmaddy

回答

1

让它类的计算性能:

class Whatever { 
    let currencyFormat: NumberFormatter = { 
     let res = NumberFormatter() 
     res.numberStyle = .currency 
     res.usesGroupingSeparator = true 
     return res 
    }() 
} 

现在你可以使用这个属性在任何方法。

func someMethod() { 
    let str = currencyFormat.string(for: 5.99) 
} 
+0

我不知道这是为什么不是为我工作。也许我把错误的地方放在'无论'类?我已经找到它我的两个班的viewController外:UIViewController中和内。 – Jupiter869

+0

这意味着无论你的班级是什么。不要创建一个新班级。只要将'currencyFormat'设置为视图控制器类的属性(或任何需要此属性的类)。 – rmaddy

+0

谢谢你纠正我的愚蠢错误!现在它奇妙地工作!谢谢!!! – Jupiter869