Ios swift:无法将类型为“()”的值转换为预期的参数类型“[Double]”
我正在iOS应用程序上使用图表 它将从蓝牙获取数据并另存为数组=[] 绘制图表时,它必须转换为[Double]Ios swift:无法将类型为“()”的值转换为预期的参数类型“[Double]”,ios,arrays,swift,xcode,data-transform,Ios,Arrays,Swift,Xcode,Data Transform,我正在iOS应用程序上使用图表 它将从蓝牙获取数据并另存为数组=[] 绘制图表时,它必须转换为[Double] func setChart(values: [Double]) { // mChart.noDataText = "No data available!" for i in 0..<values.count { print("chart point : \(values[i])") let dataE
func setChart(values: [Double]) {
// mChart.noDataText = "No data available!"
for i in 0..<values.count {
print("chart point : \(values[i])")
let dataEntry = ChartDataEntry(x: Double(i), y: values[i])
dataEntries.append(dataEntry)
}
这些是我试图从TransferdData向setChart添加数据的代码
我找到了互联网,但我无法解决这个问题
我该怎么解决这个问题
**************************编辑********************************
我现在有两份Swift文件
一个用于数据传输,另一个用于绘制图形
for i in 1...transferedData.endIndex-1{
setChart(values : transferedData[i]) // Cannot convert value of type 'String' to expected argument type '[Double]'
setChart(values: transferedData.map{ Double($0)}) //Cannot convert value of type 'Double?' to closure result type 'Double'
}
这用于保存和处理数据。
SerialViewController.swift
public var UserDis : Array<String> = []
func getRealDataProcess(){
splitUserData = receivedDataForReal.split(separator: ";")
for j in 0...splitUserData.endIndex-1 {
if splitUserData[j].count == 14{
checkedUser14Data.append(String(splitUserData[j]))
}
}
for k in 0...checkedUser14Data.endIndex-1{
var strForCal = checkedUser14Data[k]
var valDis = strForCal[strForCal.startIndex...strForCal.index(strForCal.startIndex, offsetBy: 4)]
UserDis.append(String(valDis))
}
}
for i in 0...transferedData.endIndex-1{
let inputData = Double(transferedData[i])!
setChart(values: [inputData])
}
线程1:致命错误:无法在transferredData处形成上限为
var transferedData: [String] = ["12.2","24.3","23"]
for data in transferedData {
if let convertedData = Double(data){
setChart(values : cobvertedData)
}
}
我试着用你用过的for循环
for i in 1...transferedData.endIndex-1
但是它会遗漏一个使数据集不完整的数组。因为错误消息明确指出,您不能返回可选的双精度,所以请给出默认值或使用compactMap忽略所有无法转换的值 默认值
setChart(values: transferedData.map{ Double($0) ?? 0.0})
压缩图
setChart(values: transferedData.compactMap{ Double($0) })
使用map或compactMap时不需要循环,看起来我可以将TransferdData的类型从Array更改为Arrayvar a=TransferdData.map{Double$0}setChartvalues:a as![重复]我试过了,但还没有检查。我希望它能工作。你能添加一个数组来显示数据的外观吗?看起来你应该可以做双重数据string@STerrier我尝试了Double我的字符串,它有一个错误,对初始值设定项'init:'的模糊引用感谢您的回答。没有错误,但它不显示图形。但这不是转换数据的问题,而是图形的问题。谢谢:不。。。我已经检查了图形,我直接制作了一个数组,它可以工作;您能显示用于测试的数据数组吗?我认为transferDData.endIndex可能是0,所以出现了这个问题。但我已经检查过了,它可以保存和处理数据。我不知道是什么问题;
setChart(values: transferedData.compactMap{ Double($0) })