修复github项目SwiftChart中的错误

时间:2015-02-14 05:58:11

标签: ios swift github plot

我试图追踪这个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!
}

我不太确定如何处理地图。

1 个答案:

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