在for-in循环中更改数组的名称

时间:2016-01-01 16:15:56

标签: ios arrays swift loops swift2

我需要循环使用一定数量的数组。他们的名字只有一个区别,那就是最后的一个数字。

arr1
arr2
arr3

我想从第一个数组中获取第一个数字,从第二个数组中获取第二个数字,依此类推。我还有一个数字n,其中包含有多少个数组和数组。如果有两个数组,它们每个都有两个数字,如果有三个数组,它们每个都有三个数字等等。

最初我像这样循环:

var firstDiag = 0

for (var i = 0; i < n; i++) {
    if (i == 0) {
        firstDiag += Int(arr1[i])!
    } else if (i == 1) {
        firstDiag += Int(arr2[i])!
    } else if (i == 2) {
        firstDiag += Int(arr3[i])!
    } else {
        firstDiag += 0
    }
}

但我想知道我是否能以某种方式这样做

for i in 0...n {
  firstDiag += Int(arr<i>[i])!
}

我在哪里更改数组名称的最后一个数字。是否可以这样做,或者我还应该做些什么呢?

有可能我不知道有多少阵列。

1 个答案:

答案 0 :(得分:1)

如果您可以创建符合NSKeyValueCoding的类,则可以使用valueForKeyPath(_:)来获得所需内容。用法示例如下:

import Foundation
class Test: NSObject {

    let array0 = [1, 2, 3]
    let array1 = [4, 5, 6]
    let array2 = [7, 8, 9]
    let n = 3

    func calculate() -> Int {
        var firstDiag = 0
        for i in 0..<n {
            if let array = valueForKeyPath("array\(i)") as? Array<Int> {
                firstDiag += array[i]
            }
        }

        return firstDiag
    }
}

let a = Test()
a.calculate() // Prints 15