2016-11-10 40 views
1

我想創建一個您更喜歡的應用程序,但當它單擊按鈕時,它會出錯,應用程序退出並且它會得到以下致命錯誤:索引超出範圍。我如何解決這個錯誤?這是我的代碼:致命錯誤:索引超出範圍(Swift 3)

@IBOutlet weak var legendaAzul: UILabel! 
@IBOutlet weak var legendaVermelho: UILabel! 

@IBAction func botaoAzul(_ sender: Any) { 

    var resultadoAzul: [String] = [] 
    let numero1 = arc4random_uniform(6) 

    resultadoAzul.append("Mata uma pessoa") 
    resultadoAzul.append("Come um humano") 
    resultadoAzul.append("Ser rico, mas morre daqui a um mes") 
    resultadoAzul.append("Ser amigo do Homem - Aranha") 
    resultadoAzul.append("Servir 7 anos em uma prisão violenta") 

    legendaAzul.text = resultadoAzul [(Int(numero1))] 
} 

@IBAction func botaoVermelho(_ sender: Any) { 

    var resultadoVermelho: [String] = [] 
    let numero2 = arc4random_uniform(6) 

    resultadoVermelho.append("Mata você mesmo") 
    resultadoVermelho.append("Come qualquer coisa") 
    resultadoVermelho.append("Ser pobre, mas vive para sempre") 
    resultadoVermelho.append("Ser amigo do Homem - Formiga") 
    resultadoVermelho.append("Matar e comer seu cachorro") 

    legendaVermelho.text = resultadoVermelho [(Int(numero2))] 
} 
+0

您是否檢查堆棧跟蹤或調試它以查找錯誤發生的位置? – Carcigenicate

+1

arc4random_uniform(6)'可以生成的最大數字是5 - 數組的最大索引是4. – Hamish

回答

1

你的主要問題是你硬編碼隨機的最大值,它太高了。您應該從陣列'count動態獲取它。另外,沒有理由重複執行靜態數據的append(_:)。只需使用數組文字。

@IBOutlet weak var legendaAzul: UILabel! 
@IBOutlet weak var legendaVermelho: UILabel! 

let resultadoAzul = ["Mata uma pessoa", 
    "Come um humano", 
    "Ser rico, mas morre daqui a um mes", 
    "Ser amigo do Homem - Aranha", 
    "Servir 7 anos em uma prisão violenta" 
] 

@IBAction func botaoAzul(_ sender: Any) { 
    let index = Int(arc4random_uniform(resultadoAzul.count)) 
    legendaAzul.text = resultadoAzul[index] 
} 


let resultadoVermelho = [ 
    "Mata você mesmo", 
    "Come qualquer coisa", 
    "Ser pobre, mas vive para sempre", 
    "Ser amigo do Homem - Formiga", 
    "Matar e comer seu cachorro" 
] 

@IBAction func botaoVermelho(_ sender: Any) { 
    let index = Int(arc4random_uniform(resultadoVermelho.count)) 
    legendaVermelho.text = resultadoVermelho[index] 
} 
+0

非常感謝,這是我製作的第一個應用程序,非常感謝您的幫助! –

相關問題