iOS Swift: 格式化自定义货币编号
iOS Swift: Formatting a custom Currency Number
用逗号分隔符格式化大数字。
已解决(代码已更新且完全可用)
晚上,我有来自 Double
的类型别名 Currency
。
我想用千位之间的逗号打印出来
这就是我所做的:
import Foundation
typealias Currency = Double
extension Currency {
var credit: Double { return self }
var usd: Double { return self * 0.62 }
func description() -> String {
let price = self as NSNumber
let formatter = NumberFormatter()
formatter.numberStyle = .currency
return formatter.string(from: price)!
}
}
let price: Currency = 1000000000
print(price.description)
/* It doesn't work, I want something like 1000,000,000.0 */
但是没用。怎么了?
description
是一个 属性,通过 CustomStringConvertible
协议将 description
变量声明为:
A textual representation of the value.
您要调用 description()
方法。添加括号,你会得到你想要的结果:
price.description()
您已经定义了一个函数 description
,我认为如果您调用 price.description()
,它会按您预期的那样工作。看起来您打算覆盖 CustomStringConvertable
类型的默认行为,但它使用 var description: String { get }
属性,而不是函数。
用逗号分隔符格式化大数字。
已解决(代码已更新且完全可用)
晚上,我有来自 Double
的类型别名 Currency
。
我想用千位之间的逗号打印出来
这就是我所做的:
import Foundation
typealias Currency = Double
extension Currency {
var credit: Double { return self }
var usd: Double { return self * 0.62 }
func description() -> String {
let price = self as NSNumber
let formatter = NumberFormatter()
formatter.numberStyle = .currency
return formatter.string(from: price)!
}
}
let price: Currency = 1000000000
print(price.description)
/* It doesn't work, I want something like 1000,000,000.0 */
但是没用。怎么了?
description
是一个 属性,通过 CustomStringConvertible
协议将 description
变量声明为:
A textual representation of the value.
您要调用 description()
方法。添加括号,你会得到你想要的结果:
price.description()
您已经定义了一个函数 description
,我认为如果您调用 price.description()
,它会按您预期的那样工作。看起来您打算覆盖 CustomStringConvertable
类型的默认行为,但它使用 var description: String { get }
属性,而不是函数。