【发布时间】:2016-04-20 16:58:05
【问题描述】:
所以我有这样的功能:
var localIndices: [ChartHighlight] = []
for globalHighlight in globalIndices
{
if let globalSet = data?.dataSets[globalHighlight.dataSetIndex]
{
if globalSet.dynamicType === dataSetType
{
let chartData = getChartData(dataSetType)
if (chartData == nil)
{
return globalIndices
}
let localdataSetIndex = chartData!.dataSets.indexOf(globalSet)
if (localdataSetIndex != nil)
{
localIndices.append(ChartHighlight(xIndex: globalHighlight.xIndex, dataSetIndex: localdataSetIndex!, stackIndex: globalHighlight.stackIndex))
}
}
else
{
return globalIndices
}
}
}
编译器抱怨
let localdataSetIndex = chartData!.dataSets.indexOf(globalSet)
这么说
无法将“IChartDataSet”类型的值转换为预期的参数类型“@noescape (IChartDataSet) throws -> Bool”
我很困惑为什么我不能将普通的indexOf() 用于[IChartDataSet]。这是否与 chartData!.dataSets 是 [IChartDataset] 而 IChartDataset 是 protocol 类型有关?
我没有看到 swift doc 提到这一点,或者我错过了它......
【问题讨论】:
-
您的
IChartDataSet是否符合Equatable?可能不是,这就是为什么你不能使用通常的indexOf。 -
@AlexanderDoloz 我检查了它不符合要求。谢谢!
标签: swift