gpt4 book ai didi

swift - 在 swift indexOf() 中获取编译器错误

转载 作者:可可西里 更新时间:2023-11-01 00:59:43 24 4
gpt4 key购买 nike

所以我有一个这样的函数:

    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
}
}
}

编译器报错在

让 localdataSetIndex = chartData!.dataSets.indexOf(globalSet)

这样说

Cannot convert value of type 'IChartDataSet' to expected argument type '@noescape (IChartDataSet) throws -> Bool'

我很困惑为什么我不能为 [IChartDataSet] 使用正常的 indexOf()。这与 chartData!.dataSets[IChartDataset]IChartDatasetprotocol 类型有关吗?我没有看到 swift 文档提到这个或者我错过了它......

最佳答案

要使用 indexOf 方法并将元素作为输入参数,您的 dataSets 元素类型 IChartDataSet 必须符合 Equatable 协议(protocol),您可以从 CollectionType 扩展定义中看到:

    extension CollectionType where Generator.Element : Equatable {
/// Returns the first index where `value` appears in `self` or `nil` if
/// `value` is not found.
///
/// - Complexity: O(`self.count`).
@warn_unused_result
public func indexOf(element: Self.Generator.Element) -> Self.Index?
}

或者您可以改用谓词闭包:

let localdataSetIndex = chartData!.dataSets.indexOf { $0 === globalSet }

关于swift - 在 swift indexOf() 中获取编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com