我试图追踪这个github项目中的错误。
https://github.com/gpbl/SwiftChart
所有者似乎没有回答任何问题或回复。
我无法运行此示例:
// Create a new series specifying x and y values
let data = [(x: 0, y: 0), (x: 0.5, y: 3.1), (x: 1.2, y: 2), (x: 2.1, y: -4.2), (x: 2.6, y: 1.1)]
let series = new ChartSeries(data)
chart.addSerie(series)
Xcode在数据方面给出了这个错误
ViewController.swift:41:31: '(Double, Double)' is not identical to 'Float'
在主文件Chart.swift中,有这段代码
var labels: [Float]
if xLabels == nil {
// Use labels from the first series
labels = series[0].data.map( { (point: ChartPoint) -> Float in
return point.x } )
}
else {
labels = xLabels!
}
我不太确定如何处理地图。
答案 0 :(得分:1)
这个领域存在拼写错误。它应该读
let data = [(x: 0, y: 0), (x: 0.5, y: 3.1), (x: 1.2, y: 2), (x: 2.1, y: -4.2), (x: 2.6, y: 1.1)]
let series = ChartSeries(data)
chart.addSeries(series)
话虽如此,Swift默认将0.5推断为Double,而他的默认init正在寻找x和y为Float类型。
我分叉了存储库,并添加了一个将双精度转换为浮点数的init。如果双倍太大,这显然会导致问题,但对于小数字,它可能不会成为一个问题。我还在实际项目中添加了有问题的示例。我的前叉是here。
如果所有者想要接受更改,我会发送拉取请求。否则,如果我有时间,我可以将它重构为Double并摆脱额外的init。
我在ChartSeries.swift中添加了以下init,这可以防止您总是必须定义数组,因为它将Double值元组的数组转换为Floats。
init(data: Array<(x: Double, y: Double)>) {
self.data = data.map ({ (Float($0.x), Float($0.y))})
}