ios - 如何在循环中快速将值插入多维数组

标签 ios arrays swift

<分区>

找不到这个问题的答案。

我正在尝试使用类似这样的方法将值插入到多维数组中

_ = 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 在这个循环之外的另一个循环中。事情是我收到一个错误 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0) 并且在 Playground 上玩耍之后,我意识到这是因为我的 monthList: [[String]] = [[]] 因此没有任何要插入的数组或类似的东西。如果我给它一些初始化,比如 monthList = [["1"], ["2"]] 那么我就可以插入直到 monthList[1]在它给出 monthList[2]

错误之前

帮助?谢谢

最佳答案

当你声明你的数组数组时,你的外部数组是空的。为了将值插入多维数组,您需要创建内部数组并将它们添加到外部数组。

您可以通过添加一个 while 循环来完成此操作,该循环会添加更多内部数组,直到您有足够的数组插入到:

for item in itemsOne {
    while counter >= monthList.count {
        monthList.append([String]())
    }
    monthList[counter].insert(item.key, atIndex: 0)
}

如果您提前知道 counter0...29 中的一个值,例如,您可以像这样创建内部数组:

var monthList = [[String]](count:30, repeatedValue:[])

关于ios - 如何在循环中快速将值插入多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776113/

相关文章:

ios - 无法在我的 ViewController 中显示 tableview

ios - Swift 2.0 中的 CGFloat

ios - 为什么swift5不支持导入文件的类型?

javascript - 使用 Javascript 显示猜测的字母

Javascript,循环数组并应用其他函数

ios - 原因 : '-[_UIFullscreenPresentationController adaptivePresentationController]:

ios - 代号一 native 代码中是否可以使用 swift 代码而不是 Objective-C

swift - Alamofire validate() 的增强

iphone - 一旦按下Home键,iPhone ASIHTTPRequest如何继续在后台加载请求?

c++ - vector 下标超出范围错误 C++