图表中饼图的格式值

时间:2018-08-24 11:11:34

标签: ios swift charts

我正在使用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)")!带来了错误,而错误是因为valuenil

任何人都可以帮我解决我做错了什么以及应该做些什么才能获得预期的输出。

1 个答案:

答案 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