我正在使用 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]]
。