【问题标题】:Using the Same Currency Formatting in Multiple Methods在多种方法中使用相同的货币格式
【发布时间】:2017-08-16 13:57:15
【问题描述】:

我正在使用一些货币格式将货币符号/样式设置为用户的本地设置。这是我的代码。我认为它工作正常。它位于我的 viewDidLoad 中。

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

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

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

我正在使用 Swift 3。感谢您提供的任何帮助!

【问题讨论】:

  • 使用类或全局值,或单例。
  • 仅供参考 - 无需将语言环境设置为当前语言环境,因为这是默认设置。
  • 啊,也谢谢你!竖起大拇指!

标签: swift swift3 number-formatting currency-formatting numberformatter


【解决方案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)
}

【讨论】:

  • 我不确定为什么这对我不起作用。也许我把“Whatever”课程放在了错误的位置?我已经在我的类 Viewcontroller 之外找到了它:UIViewController 和里面。
  • 这意味着无论你的班级是什么。不要创建一个新的类。只需将 currencyFormat 设为视图控制器类的属性(或任何需要此属性的类)。
  • 感谢您纠正我的愚蠢错误!现在它工作得很好!谢谢!!!
猜你喜欢
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 2017-01-20
相关资源
最近更新 更多