2015-01-10 42 views
2

我知道我可以初始化整数数组例如像二维数组:Xcode的斯威夫特 - 如何初始化的许多元素[AnyObject]你想

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

我想要做的就是是这样的:

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

(Xcode中返回一个:不能构建AnyObject,因为它没有可访问的初始化)

有了相同的结果,因为我可以初始化数组一样:

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 ] 

在我的页面的顶部;)

谢谢您的时间!

+0

只需使用一个for循环来补充内部阵列 – Paulw11

回答

5

你不需要第二repeatedValue初始化器,因为你想要一个空数组。你可以只用

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

我甚至没有得到repeatValue与工作AnyObject。我看来我错过了方括号! 谢谢你的回答! –

0

尝试在地方你的代码使用该

1

你可以用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 
0

试试这个

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

斯威夫特3:

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

感谢您花时间提供答案。这是因为像你这样有帮助的同伴,我们可以一起学习社区。这里有一些关于如何让你的答案很好的技巧:[我如何写出一个好的答案](https://stackoverflow.com/help/how-to-answer) – Brien

+0

永远记住要将解释添加到你发布的答案中,所以用户可以理解它的使用。 @Nithin – LuFFy