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)
我知道我可以初始化一个整数数组,例如:
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)