在文本字段占位符中显示基于位置的货币标识符

时间:2014-07-26 22:53:53

标签: xcode swift

基本上在我的应用程序中,我有两个用于磅和便士值输入的文本字段。我目前正在努力使我的应用程序本地化,我遇到了一个问题。我的文本字段有占位符'Pounds'和'Pence',我需要它们根据用户位置显示货币和子货币的占位符,例如美国的'美元'和'美分'。

我不知道如何以一种有效率的方式做到这一点,我希望能就如何解决这个问题提出一些建议。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用NSLocale获取本地货币的名称:

var locale = NSLocale.currentLocale()
var currencyCode: (AnyObject!) = locale.objectForKey(NSLocaleCurrencyCode)
locale.displayNameForKey(NSLocaleCurrencyCode, value: code) // "British Pound"

但是,似乎您可能对正式名称不满意,我不知道如何获得Pence或Cents,因此您也可以使用区域设置标识符创建自己的列表:

struct LocalCurrency {
    static func wholeName(forLocale locale: NSLocale = NSLocale.currentLocale()) -> String {
        var identifier : String = locale.localeIdentifier
        switch(identifier) {
            case "en_UK":
                return "Pounds"
            case "en_US":
                return "Dollar"
            default:
                return ""
        }
    }
}
LocalCurrency.wholeName() // "Pounds"

您可以为部分货币创建类似的方法,您必须手动添加要支持的所有区域设置,但至少设备会告诉您当前的区域设置是什么。

<强>更新

您还可以获取货币符号:

locale.displayNameForKey(NSLocaleCurrencySymbol, value: code) // £

或者您可以使用NSNumberFormatter为您格式化货币:

var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.stringFromNumber(1.23) // £1.23

也许您可以使用其中一种方法来创建一种新格式,以便在不创建手动列表的情况下显示它。