【问题标题】:Cannot invoke initializer for type CGFloat with an argument list of type 'String'无法使用“String”类型的参数列表调用 CGFloat 类型的初始化程序
【发布时间】:2017-04-07 07:12:11
【问题描述】:

我正在从 JBChart 制作条形图。我想将图表数据更改为字符串。请帮我做。

这是 chartData 代码: var chartData = [1, 2, 3]

然后我想将它从其他视图控制器的 UILabel 更改为字符串。

var chartData = [score1, score2, score3]

但我总是在这段代码中收到此错误(无法调用类型为“字符串”的参数列表的 CGFloat 类型的初始化程序):

    public func barChartView(_ barChartView: JBBarChartView!, heightForBarViewAt index: UInt) -> CGFloat {
        return CGFloat(chartData[Int(index)])
    }

【问题讨论】:

    标签: swift bar-chart jawbone


    【解决方案1】:

    错误清楚地表明CGFloat 没有接受String 作为参数的初始化程序。您可以使用环绕式,例如先将String 转换为Float,然后再将Float 转换为CGFloat

    public func barChartView(_ barChartView: JBBarChartView!, heightForBarViewAt index: UInt) -> CGFloat {
    
        if let value = Float(chartData[Int(index)]) {
            return CGFloat(value)
        }
        return 0
    }
    

    注意:确保此String 具有数字作为值,否则它将为height 返回0

    【讨论】:

    • 你是对的,字符串没有数值。它返回到 0。
    • @VonRalphMarquez 可能是您使用了错误的方法。
    • 是的。我正在寻找它。您的代码有效。只有我放的字符串没有价值。 :(
    • @VonRalphMarquez 表示你的字符串数组是空的?
    • 我想是的。在同一视图控制器中的 UILabel 中的值怎么样?这行得通吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多