Swift: 'l'utilisation de suspens identificateur'- comment modifier une variable et utiliser cette variable dans les différentes fonctions?
J'ai besoin d'avoir ce bouton que j'ai créé (bouton bleu) de modifier une variable (nommée playerMark
) que j'ai créer et utiliser plus tôt dans un autre bloc de code dans mon code.
Ici est où playerMark
est introduit et est utilisé:
func setImgforCircle(spot:Int, player:Int) {
var playerMark = player == 1 ? "Red_x" : "Red_o"
plays[spot] = player
switch spot {
case 1:
circle1.image = UIImage(named: playerMark)
case 2:
circle2.image = UIImage(named: playerMark)
case 3:
circle3.image = UIImage(named: playerMark)
case 4:
circle4.image = UIImage(named: playerMark)
case 5:
circle5.image = UIImage(named: playerMark)
case 6:
circle6.image = UIImage(named: playerMark)
case 7:
circle7.image = UIImage(named: playerMark)
case 8:
circle8.image = UIImage(named: playerMark)
case 9:
circle9.image = UIImage(named: playerMark)
default:
circle2.image = UIImage(named: playerMark)
}
}
J'ai une IBAction nommé blueBtnClicked
accroché à mon bouton bleu que j'ai besoin pour exécuter:
playerMark = player == 1 ? "Blue_x" : "Blue_o"
mais la console ne permet pas de se "souvenir" de l'variables (playerMark et le joueur) et je reçois le message d'erreur, " l'usage de suspens identifiant.' Voici la blueBtnClicked
bloc:
@IBAction func blueBtnClicked(sender: UIButton) {
gameboard.image = UIImage(named: "Blue_gb")
resultsView.image = UIImage(named: "Blue_results")
colorsView.image = UIImage(named: "Blue_Colors")
colorsBtn.setTitleColor(UIColor.lightTextColor(), forState: UIControlState.Normal)
resetBtn.setTitleColor(UIColor.lightTextColor(), forState: UIControlState.Normal)
}
Que puis-je faire pour modifier la playerMark variable lorsque certaines utilisateur clique sur les boutons? Veuillez expliquer toutes les réponses à très bien comme je suis nouvelle Swift.
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous essayez d'accéder à une variable qui n'est pas dans la portée. Actuellement, le champ d'application de la playerMark variable est la setImgforCircle fonction, ce qui signifie que playerMark n'est accessible que dans setImgforCircle.
Une solution peut être de définir les playerMark variable en dehors de la fonction comme une variable de classe comme ceci:
Le point d'interrogation fait de cette variable, une option de sorte que vous n'avez pas besoin d'affecter directement une valeur (la valeur est désormais nul)
pour affecter une valeur à playerMark vous pouvez simplement dire
vous n'avez pas besoin de définir de nouveau, avec var.
Maintenant, le var est disponible n'importe où dans votre classe. Vous pouvez le lire en utilisant
playerMark!
Le point d'exclamation signifie "je sais que cette valeur peut être nulle, mais donnez-moi la valeur de toute façon".
La manière la plus sûre pour gérer néant valeurs de playerMark serait:
Pour obtenir une meilleure compréhension de swift je recommande la lecture de "La Swift en Langage de Programmation" par Apple, disponible gratuitement sur iBooks
blueBtn
de la même façon et fait le IBAction le mettre à false et ensuite utilisé comme si une partie (if blueBtn == false
) dans un if-else dans monsetImgForCircle
fonction mais n'importe quoi, l'autre partie s'exécute. Ce qui se passe?