Ich habe einige Fortschritte in meiner App gemacht, um RoShambo zu spielen, bin aber auf eine bestimmte Sache gestoßen. In einem ViewController habe ich zwei Eigenschaften der Klasse festgelegt. Ich möchte, dass sie Ganzzahlen sind, weil ich später in der Klasse mit Ganzzahlen eine switch-Anweisung verwende. Ich erhalte jedoch einen Fehler, wenn ich ganze Zahlen verwenden sagen:So verwenden Sie optionale Ints in einer Switch-Anweisung
"Class 'ResultsViewController' has no initializers"
"stored property 'your play' without initial value prevents synthesized initializers"
Nun, diese Fehler weggehen, wenn ich meine gespeicherten Eigenschaften optionals machen, aber dann habe ich Fehler auf meiner switch-Anweisung bekommen, weil es ganze Zahlen verwendet, nicht optionals.
Also habe ich zwei Fragen: 1) In der switch-Anweisung, die ich unten habe, wie würde ich Werte des Typs "Int?" in einer switch-Anweisung?
2) Wenn meine optionalen Werte null sind, wie kann ich das Programm beenden und die switch-Anweisung nicht ausführen, da es keinen Sinn ergibt, den Vergleich durchzuführen?
import Foundation
import UIKit
class ResultsViewController: UIViewController {
// MARK: Properties
var opponentPlay: Int?
var yourPlay: Int?
//Mark: Outlets
@IBOutlet weak var MatchResult: UILabel!
@IBOutlet weak var PlayAgainButton: UIButton!
//Mark: Life Cycle
override func viewWillAppear(_ animated: Bool){
//unwrap optional properties
if let opponentPlay = opponentPlay {
print("good play")
} else {
print("opponentPlay is nil")
}
if let yourPlay = yourPlay {
print("good play")
} else {
print("opponentPlay is nil")
}
switch (opponentPlay, yourPlay) {
case (1, 1), (1, 1), (2, 2), (2, 2), (3, 3), (3, 3):
self.MatchResult.text = "You Tie!"
case (1, 2):
self.MatchResult.text = "You Win!"
case (2, 1):
self.MatchResult.text = "You Lose!"
case (1, 3):
self.MatchResult.text = "You Lose!"
case (3, 1):
self.MatchResult.text = "You Win!"
case (2, 3):
self.MatchResult.text = "You Win!"
case (3, 2):
self.MatchResult.text = "You Lose!"
default:
break
}
Überprüfen Sie bitte [diesen Thread] (https://stackoverflow.com/q/37452118/6541007). – OOPer