Xcode Swift - 如何初始化包含任意数量元素的 [[AnyObject]] 二维数组

Xcode Swift - How to initialize a 2D array of [[AnyObject]] of as many elements you want

我知道我可以初始化一个整数数组,例如:

var intArray = [Int](count: 10, repeatedValue: 0)

我想做的是这样的:

var array = Array(count:6, repeatedValue:Array(count:0, repeatedValue:AnyObject()))

(Xcode returns with: AnyObject cannot be constructed because it has no accessible initializers)

与我初始化数组的结果相同:

var anyObjectArray : [[AnyObject]] = [[],[],[],[],[],[]]

但是如果我需要 100 行让我们说 3

问题是我可以像这样在我的函数中附加:

// init array
var anyObjectArray : [[AnyObject]] = [[],[],[]]

//inside a for loop
anyObjectArray[i].append(someValue)

这工作正常,当然直到我变得比数组中的行数更高。 如果我可以做类似的事情,这个问题的答案也是可以接受的:

anyObjectArray[append a empty row here][]

但这可能是愚蠢的:)

我希望有办法做到这一点,因为我不喜欢这样的一行:

var anyObjectArray : [[AnyObject]] = [ [],[],[],[],[],[],[],[],[],[],[],[],[],[],[], ... etc ]

在我页面的顶部 ;)

感谢您的宝贵时间!

试试这个

let array = Array(count:6, repeatedValue:[])

for (var i=0; i<array.count; i++){
    array[i] = Array(count:0, repeatedValue: AnyObject.self)
} 

代替您的代码。

您可以尝试使用 2 个循环,作为网格工作:

var items: = Array<Array<Item>>()
for col in 0..<maxCol {
    var colItems = Array<Item>()
    for row in 0..<maxRow {
        colItems.append(Item())
    }
    items.append(colItems)
}
//Append as much as you want after

您不需要第二个 repeatedValue 初始化程序,因为您需要一个空数组。你可以只使用

var array = Array(count:6, repeatedValue:[AnyObject]())

试试这个

    let columns = 27
    let rows = 52
    var array = Array<Array<Double>>()
    for column in 0... columns {
        array.append(Array(count:rows, repeatedValue:Int()))
    }

Swift 3:

var array = Array(repeating:[AnyObject](),count:6)