[Double?]无法转换为[Double]
这是错误的行
let massive = [dictionary[j]![one]?.doubleValue] as [Double]
我正在转换为[Double],因为我在这里使用它
let dataEntry = BarChartDataEntry(values: massive, xIndex: c)
它会抛出错误
无法为类型' BarChartDataEntry'调用初始值设定项。与 类型'的参数列表(值:[Double?],xIndex:Int)'
类BarChartDataEntry的构造函数就是那个
public init(values: [Double], xIndex: Int)
答案 0 :(得分:2)
[Double?]被包裹,您需要打开它才能将其用作[Double]。为了更好地理解,请看看你的双打包裹着什么:
enum Optional<T> {
case None // has no value
case Some(T) // has some value
}
所以你需要打开你的选项,以便将它们用作非选项[Double]。
一个选项是,您可以对可选阵列执行flatMap
操作,将[Double?]转换为[Double]。请记住,flatMap会复制你的数组并替换它,所以如果你在一个非常大的数组上执行flatMap,你可能会遇到问题。
这是一个操场就绪的例子:
var dubs : [Double?] = [1.2,1.4]
print(dubs) // [{Some 1.2}, {Some 1.4}]
var newDubs = dubs.flatMap { dub in
return dub
}
print(newDubs) // [1.2, 1.4]
答案 1 :(得分:0)
这取决于你的双倍价值。在这种情况下,您必须确保它有一个小数点,并且不是0.0。在这种情况下,您可以将代码设为
//your code
... = Double[...]
它应该解决。否则,请提供一些代码,以便我建议一种解决方法。希望这适合你:)