使用浮点数循环访问 2D 数组时出错



我正在使用 2D 数组来存储所有坐标,我想将每个坐标分配给一个 CGPoint 函数,但我收到此错误:

不能下标类型为 inout[[浮点型]]

的值

以下是我的代码:

        var entryPoint: [[Float]] = [[130.6,52.3],[167.5,52.1],[204.5,51.91],[243.6,48.91],[281.16,48.75],[167.5,67.41],[204.5,67.91],[243.6,68.5],[281.16,69.16]]
        for var x in 0..<entryPoint.count
        {
            for var y in 0..<entryPoint[x].count
            {
                print(entryPoint[x][y])
                let circlePath = UIBezierPath(arcCenter: CGPoint(x: entryPoint[x][y],y: entryPoint[x][y]), radius: CGFloat(0.5), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
                let shapeLayer = CAShapeLayer()
                shapeLayer.path = circlePath.cgPath
                shapeLayer.fillColor = UIColor.red.cgColor
                shapeLayer.strokeColor = UIColor.red.cgColor
                shapeLayer.lineWidth = 0.8
            }
        }

只需将类型Float更改为CGFloat

var entryPoint: [[CGFloat]] = [[130.6,52.3],[167.5,52.1],[204.5,51.91],[243.6,48.91],[281.16,48.75],[167.5,67.41],[204.5,67.91],[243.6,68.5],[281.16,69.16]]

另外,您可以像这样迭代:

for (index,value) in entryPoint.enumerated(){
    print("Zero",value[0])
    print("One",value[1])
}

该错误具有误导性,CGPoint(x:y:)需要CGFloat作为参数,并且您当前正在传递Float值转换Float CGFloat以减少该错误。

var entryPoint: [[Float]] = [[130.6,52.3],[167.5,52.1],[204.5,51.91],[243.6,48.91],[281.16,48.75],[167.5,67.41],[204.5,67.91],[243.6,68.5],[281.16,69.16]]
for entry in Array(entryPoint.dropFirst()) {
        print(entry[0])
        print(entry[1])
        let circlePath = UIBezierPath(arcCenter: CGPoint(x: CGFloat(entry[0]),y: CGFloat(entry[1]), radius: CGFloat(0.5), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
        let shapeLayer = CAShapeLayer()
        shapeLayer.path = circlePath.cgPath
        shapeLayer.fillColor = UIColor.red.cgColor
        shapeLayer.strokeColor = UIColor.red.cgColor
        shapeLayer.lineWidth = 0.8
    }
}

注意:您还可以创建类型为 [[CGFloat]] 的数组,而不是也可以删除此错误的数组[[Float]]

最新更新