致命错误:索引超出范围(Swift 3)

时间:2016-11-10 22:16:48

标签: swift3

我想创建一个您更喜欢的应用程序,但是当我单击一个按钮时它会出错,应用程序退出并且它会收到此致命错误错误:索引超出范围。我该如何解决这个错误?这是我的代码:

@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))]
}

1 个答案:

答案 0 :(得分: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]
}