初始化结构

弗拉迪斯拉夫

我已经写了结构。

struct linesHor
{
    var line = CAShapeLayer()
    var linePath = UIBezierPath()
    var beginX : CGFloat
    var endX : CGFloat
    var lastY : CGFloat
    var point1 = CGPoint.zero
    var point2 = CGPoint.zero
    init(){
        beginX = 0
        endX = 0
        lastY = 0
    }
}

我做了这个结构的数组。

var linesHorisontal = [linesHor]()

当我尝试访问数组的结构字段时,出现“超出范围”异常。

linesHorisontal[0].point1 = CGPoint(x: 0, y: self.view.frame.height/2)
linesHorisontal[0].beginX = 0
东北

看起来您可能尚未向数组中添加任何元素,所以您超出了索引范围。您已经创建了类型为的数组,linesHor但是现在需要用值填充它。

这有效:

var linesHorisontal = [linesHor]()
var lh = linesHor()
linesHorisontal.append(lh)

linesHorisontal[0].point1 = CGPoint(x: 0, y: 0)
linesHorisontal[0].beginX = 0

要么

var linesHorisontal = [linesHor()]

linesHorisontal[0].point1 = CGPoint(x: 0, y: 0)
linesHorisontal[0].beginX = 0

第二个示例创建您的结构,然后将其放置在数组的第一个位置。第一个示例创建一个空数组,其中没有type元素linesHor

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章