首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLocale Swift 3

NSLocale Swift 3
EN

Stack Overflow用户
提问于 2016-09-16 03:42:56
回答 5查看 9.2K关注 0票数 14

如何在Swift 3中获取货币符号?

代码语言:javascript
复制
public class Currency: NSObject {
    public let name: String
    public let code: String
    public var symbol: String {
        return NSLocale.currentLocale().displayNameForKey(NSLocaleCurrencySymbol, value: code) ?? ""
    }

    // MARK: NSObject

    public init(name: String, code: String) {
        self.name = name
        self.code = code
        super.init()
    }
}

我知道NSLocale被重命名为Locale,但是displayNameForKey被删除了,我似乎只能使用localizedString(forCurrencyCode: self.code)在当前语言环境中生成货币的名称,而不能获得它的符号。我正在寻找一种在当前地区获得外币符号的方法。

还是我忽略了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-09-16 03:56:04

NSLocale未重命名,它仍然存在。Locale是Swift 3中引入的一种新类型,作为值类型包装器(请比较SE-0069 Mutability and Foundation Value Types)。

显然,Locale没有displayName(forKey:value:)方法,但您始终可以将其转换为与其对应的NSLocale

代码语言:javascript
复制
public var symbol: String {
    return (Locale.current as NSLocale).displayName(forKey: .currencySymbol, value: code) ?? ""
}

更多示例:

代码语言:javascript
复制
// Dollar symbol in the german locale:
let s1 = (Locale(identifier:"de") as NSLocale).displayName(forKey: .currencySymbol, value: "USD")!
print(s1) // $

// Dollar symbol in the italian locale:
let s2 = (Locale(identifier:"it") as NSLocale).displayName(forKey: .currencySymbol, value: "USD")!
print(s2) // US$
票数 24
EN

Stack Overflow用户

发布于 2016-09-16 03:56:40

代码语言:javascript
复制
Locale.current.currencySymbol

新的Locale类型将大多数字符串类型的属性移动到真实属性中。有关属性的完整列表,请参阅developer pages

票数 5
EN

Stack Overflow用户

发布于 2017-05-26 10:36:17

我对区域设置使用扩展,这是我的代码

代码语言:javascript
复制
extension Int {
func asLocaleCurrency(identifier: String) -> String {
    let formatter = NumberFormatter()
    formatter.numberStyle = .currency
    formatter.locale = Locale(identifier: identifier)
    return formatter.string(from: NSNumber(integerLiteral: self))!
}
}

这个是用来用的

代码语言:javascript
复制
var priceCount = 100000
priceCount.asLocaleCurrency(identifier: "id_ID")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39519144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档