无法找到答案。
我正在尝试使用类似这样的
将值插入到多维数组中.slide
我的_ = transportRef.observeEventType(.ChildAdded, withBlock: { (snapshotOne) in
self.yearList.insert(snapshotOne.key, atIndex: 0)
//print("snapshotone.key " + snapshotOne.key) // prints year
if let snapshotTwo = snapshotOne.children.allObjects as? [FIRDataSnapshot] {
for itemTwo in snapshotTwo {
self.monthList[self.counter].insert(itemTwo.key, atIndex: 0)
}
}
counter += 1
}
在这个之外的另一个循环中。问题是我收到了一个错误counter
并且在Playground玩游戏之后,我意识到这是因为我的Thread 1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)
因此没有任何数组要插入或类似的东西。如果我要给它一些初始化monthList: [[String]] = [[]]
,那么在它为monthList = [["1"], ["2"]]
monthList[1]
帮助?感谢
答案 0 :(得分:2)
声明数组数组时,外部数组为空。为了将值插入到多维数组中,您需要创建内部数组并将它们添加到外部数组。
您可以通过添加while
循环来添加更多内部数组,直到您有足够的内容插入到:
for item in itemsOne {
while counter >= monthList.count {
monthList.append([String]())
}
monthList[counter].insert(item.key, atIndex: 0)
}
如果您提前知道counter
是来自0...29
的值,您可以像这样创建内部数组:
var monthList = [[String]](count:30, repeatedValue:[])
答案 1 :(得分:0)
在尝试添加到该阵列之前,您可能需要初始化第二维中的每个数组,我不知道您是否实际执行此操作,因为提供的代码段非常小。另外我相信swift中的数组是可变的,所以你可以这样做:
monthList[counter] = [String]()
for item in itemsOne {
monthList[counter].append(item.key)
}
通过使用append,您可以动态地将元素插入到数组中。否则,您需要为insert方法的atIndex参数增加另一个计数器变量,因为在您的代码中,insert方法中的atIndex始终在索引0处插入。