2016-06-13 19 views
0

Ich mache ein kleines Spiel, indem ich meine Swift-Sprache verbessere, so dass ich nicht mit allen Funktionen von Swift vertraut bin. Deshalb ich dies fragen:Ändern Sie den Wert des Typs Bool mit der Zeichenfolge

ich habe:

var Playedcardone: Bool = false 
var Playedcardtwo: Bool= false 
ect ect ect 

mein IBAction, ist dies mit 52 Karten angeschlossen:

@IBAction func Tappedoncard(card: UIButton) { 
     if tapped == true{ //nvm this 
     checkcard(card) 
    } 
    } 

In einer Funktion, die ich habe:

func checkcard(Card: UIButton) { 
     ("Playedcard" + Card.currentTitle!) = true 
    } 

Nun, wie Sie vermuten können, funktioniert diese Funktion nicht. Wie kann ich auf eine Var Bezug nehmen, die ich je nach der Karte, die ich angerufen habe, gemacht habe? Wenn die Karte angekreuzt ist, muss der Bool auf "True" geändert werden. Ich kann dies tun, indem ich 52 vars und 51 andere if-Anweisungen erstelle, aber es sollte eine schnellere Option geben, oder? Sie helfen ist willkommen :).

/offtopic: Ich weiß, ich könnte verwendet Klassen, um meine Karte Wert, UIIMageview und die Bool selbst zu definieren. Ich verstehe Klassen nicht optimal, vielleicht für meine nächste App, die ich verwenden werde. Wenn Sie meinen Code sehen wollen und Sie mir eine Hand geben wollen, fragen Sie einfach und ich werde den Code hier fallen lassen.

+0

können Sie klären, was Sie versuchen zu tun? Möchten Sie, dass die Funktion die Variable in wahr ändert? –

+0

@Jhonnyjammer bitte posten Sie mehr Code und klären Sie Ihr Ziel. Damit andere und ich dir helfen können. – Ike10

+0

Ich habe meinen Beitrag aktualisiert. Bitte schauen Sie noch einmal. – Nahaku

Antwort

0

Sie können nicht auf eine Variable zugreifen, die eine Zeichenfolge verwendet, wie Sie es versuchen. Sie müssen eine Art bedingte Überprüfung durchführen, um die Variablen wie folgt zu aktualisieren.

func checkcard(Card: UIButton) { 
    if Card.currentTitle! == "one" { 
     Playedcardone = true 
    } else if Card.currentTitle! == "two" { 
     Playedcardtwo = true 
    } 
} 

Es gibt eine Fülle von verschiedenen Lösungen, die Sie nutzen könnten - zum Beispiel, warum nicht zwei separate IBActions für jede Karte machen? Ich würde auch vorschlagen, Kleinbuchstaben für den Start Ihrer Variablen zu verwenden.

+0

Auf diese Weise muss ich 52 Variablen und 51 if-Anweisungen hinzufügen, um festzustellen, was der aktuelle Titel der Karte ist ... Gibt es keine andere Option? Sie sagen, ich könnte zwei separate IBActions erstellen, aber was sollte die andere IBAction enthalten? – Nahaku

+0

@Jhonnyjammer Wenn dies der Fall ist, benötigen Sie einen anderen Ansatz zum Speichern Ihrer Karten, wenn Sie ein Array verwenden –

Verwandte Themen