我正在创建一个预算应用程序,允许用户输入他们的预算以及交易.我需要允许用户从单独的文本字段输入便士和英镑,它们需要与货币符号一起格式化.我有这个工作的罚款目前,但想使其本地化,因为目前它只与英镑.我一直在努力将NSNumberFormatter示例从Objective-C转换为Swift.

我的第一个问题是,我需要将输入字段的占位符设置为特定于用户位置.英镑和便士、美元和美分等...

第二个问题是,在每个文本字段(如10216和32)中输入的值需要格式化,并且需要添加特定于用户位置的货币符号.所以它会变成10216.32英镑或10216.32美元等等...

此外,我需要在计算中使用格式化数字的结果.那么,我怎样才能做到这一点,而不会遇到货币符号的问题呢?

推荐答案

下面是一个如何在Swift 3上使用它的示例.

let price = 123.436 as NSNumber

let formatter = NumberFormatter()
formatter.numberStyle = .currency
// formatter.locale = NSLocale.currentLocale() // This is the default
// In Swift 4, this ^ was renamed to simply NSLocale.current
formatter.string(from: price) // "$123.44"

formatter.locale = Locale(identifier: "es_CL")
formatter.string(from: price) // $123"

formatter.locale = Locale(identifier: "es_ES")
formatter.string(from: price) // "123,44 €"

下面是一个关于如何在Swift 2上使用它的老例子.

let price = 123.436

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
// formatter.locale = NSLocale.currentLocale() // This is the default
formatter.stringFromNumber(price) // "$123.44"

formatter.locale = NSLocale(localeIdentifier: "es_CL")
formatter.stringFromNumber(price) // $123"

formatter.locale = NSLocale(localeIdentifier: "es_ES")
formatter.stringFromNumber(price) // "123,44 €"

Swift相关问答推荐

如何取消正在视图修改器中运行的任务

如何在SWIFT中解码Instagram Backup中的字符串?

有没有一种方法可以迭代可编码的代码(例如,JSON解析中的每一项)?

通常从数组调用的SWIFT静态协议函数

如何使用变量 Select 哪个向量(?)在我的 struct 中密谋吗?

不能将符合协议的SWIFT类的实例分配给需要该协议的Objective-C属性

在扩展中创建通用排序函数

Swift数据关系

是否可以限制 ExpressibleByIntegerLiteral struct 的初始值?

UIImage和UIimage.pngData返回两个不同的图像

将 ArgumentParser 与 Swift 并发一起使用

如何将视图添加到多行文本视图的末尾?

Firebase removeObserver 在 Swift 5 中不起作用

响应 UITextField (UIViewRepresentable) 中的特定按键

您可以在运行时访问 Picker 元素并更改它们的 colored颜色 吗

在 SwiftUI 中,如何在 UIView 内或作为 UIView 使用 UIHostingController?

更新我的 pod 导致 GoogleDataTransport Umbrella 标头出现错误

如何在 GCD 中停止 DispatchWorkItem?

Swift 3:小数到 Int

自定义 MKAnnotation 标注视图?