【问题标题】:Swift array index out of rangeSwift数组索引超出范围
【发布时间】:2016-11-10 16:53:18
【问题描述】:

为什么这不起作用?

var lottoTaulukko = [Int]()
var finalLottoTaulukko = [[Int]]()

var laskuri1 = 0
var laskuri2 = 0

while laskuri2 < Int(riviLaskuri) {

    while laskuri1 < Int(lottoMuoto) {
        showRowsLabel.stringValue += "\(lottoTaulukko[laskuri1])"
        finalLottoTaulukko[laskuri2][laskuri1] = lottoTaulukko[laskuri1] // ERROR IS HERE IN THIS LINE! fatal error: Index out of range

showRowsLabel.stringValue += " "
        laskuri1 += 1
    }

    laskuri1 = 1
    showRowsLabel.stringValue += "\n"
    if laskuri2==10 {showRowsLabel.stringValue += "\n"}
    lottoTaulukko.shuffle()
    laskuri2 += 1
}

【问题讨论】:

  • 您正试图通过索引访问数组的元素,但您传递的索引超出了数组的范围。查看您的代码,我认为您尝试索引的 finalLottoTaulukko 超出了其范围。你初始化这个数组了吗?它的大小是多少?
  • 当您尝试访问它们的内容时,您的两个数组似乎都是空的。
  • 请考虑重构您的代码。处理数据和修改 UI 组件应该是应用程序逻辑的两个独立部分,或者至少应该分成两个不同的、随后调用的方法。不要像现在这样在一处处理数据和修改标签。

标签: arrays swift multidimensional-array swift2


【解决方案1】:

同样指定数组大小:

let size = ARRAY.count

看看它是否适合你!

【讨论】:

    【解决方案2】:

    尝试检查您的索引是否存在:

    while laskuri1 < Int(lottoMuoto) {
        if let lt = lottoTaulukko[laskuri1]?{
            showRowsLabel.stringValue += "\(lottoTaulukko[laskuri1])"
            if finalLottoTaulukko[laskuri2]? != nil && finalLottoTaulukko[laskuri2][laskuri1]? != nil{
                finalLottoTaulukko[laskuri2][laskuri1] = lottoTaulukko[laskuri1] 
            }
        }
    
    showRowsLabel.stringValue += " "
            laskuri1 += 1
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多