2016-11-10 41 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

非常感谢,这是我制作的第一个应用程序,非常感谢您的帮助! –

相关问题