2016-11-10 2 views
1

원하는 응용 프로그램을 만들고 싶지만 단추를 클릭하면 응용 프로그램이 종료되고이 치명적인 오류가 발생합니다. Index out of range . 이 오류를 수정하려면 어떻게합니까? 이것은 내 코드입니다.치명적인 오류 : 인덱스가 범위를 벗어났습니다. (스위프트 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

고맙습니다. 이것은 제 첫 번째 앱으로 나를 도와 주셔서 감사합니다 !! –

관련 문제