我正在使用iOS的图表库中的饼图,并且能够在图表上显示结果,但无法格式化该图表中的值。
预期产量
我希望将值£附加在值之前。就是这样-10英镑
我做了什么
class ChartValueFormatter : NSObject, IValueFormatter {
var numberFormatter : NumberFormatter?
convenience init(numberFormatter : NumberFormatter) {
self.init()
self.numberFormatter = numberFormatter
}
func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String{
return numberFormatter!.string(for: "£ \(value)")!
}
}
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.locale = Locale.current
let valuesFormatter = ChartValueFormatter(numberFormatter: numberFormatter)
dataSet.valueFormatter = valuesFormatter
实际问题
这种方法给我return numberFormatter!.string(for: "£ \(value)")!
带来了错误,而错误是因为value
是nil
。
任何人都可以帮我解决我做错了什么以及应该做些什么才能获得预期的输出。
答案 0 :(得分:0)
请检查以下内容:
let price:Float = 1.99
extension Float {
var asLocaleCurrency:String {
var formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = "GBP"
return formatter.string(for: self)!
}
}
let pri = price.asLocaleCurrency
print(pri)
结果:1.99英镑
您应该使用
formatter.numberStyle = .currency
不是.decimal