如何在循环swift中将值插入到多维数组中

时间:2016-06-12 15:41:47

标签: ios arrays swift

无法找到答案。

我正在尝试使用类似这样的

将值插入到多维数组中
.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]

帮助?感谢

2 个答案:

答案 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处插入。