附加数组自定义函数不起作用

时间:2016-08-23 15:15:57

标签: arrays swift swift2 append

我的项目中有以下数组:

var bottom = [[CGPoint]]() // bottom = [bottom1,...,bottom5]
var left = [[CGPoint]]() // left = [left1,...,left5]
var top = [[CGPoint]]() // top = [top1,..., top5]
var right = [[CGPoint]]() // right = [right1,...,right5]
var bottomExtended = [[CGPoint]]()

directionArray = [right, bottom, left, top]
enum Direction: Int  {

case right = 0, bottom, left, top

}

bottombottomExtended的长度相同。我使用以下代码将它们合并成功:

for i in 0..<bottom.count {
        bottom[i].appendContentsOf(bottomExtended[i])
    }

我写了一个合并数组的通用函数:

func addToDirectionArray    (direction:Direction, addArray:[[CGPoint]])  {
    let enumRawValue = direction.rawValue

    for i in 0..<directionArray[enumRawValue].count {
        directionArray[enumRawValue][i].appendContentsOf(addArray[i])
    }
}

我测试了以下内容:

addToDirectionArray(.bottom, addArray: bottomExtended)

但它没有合并数组。我检查了数组计数。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:-1)

我认为你的问题的原因是你正在声明CGPoint数组的数组而不是CGPoints数组。

尝试:

var bottom = [CGPoint]()

并且与其他数组一样显然也是如此

编辑:我不知道为什么这个被低估了。如果数组的数组是预期的行为,那么它可以正常工作。只是做了一个游乐场来证明它。

enter image description here 显然,你要追加元素的数组是directionArray(最后一行代码)。原始底部数组未被修改,因为directionArray包含底部数组的COPY,而不包含原始底部数组,因为此行

directionArray = [right, bottom, left, top]