2016-05-10 13 views
0

Ich weiß, wenn eine Variable deklariert ist, ist es einfach zu testen, ob es Null ist oder nicht, aber ich finde keinen Weg herauszufinden, ob eine Variable überhaupt deklariert ist. Was ich brauche, ist:Wie überprüfe ich, ob eine Variable in Swift deklariert ist?

Wenn Variable deklariert ist:

var i:Int 
if [i is declared] { 
    // returns true 
} 

Wenn die Variable nicht deklariert ist:

if [i is declared] { 
    // returns false (but does not crash) 
} 

Anwendungsfall: ich eine App schreibe Leute Swift zu unterrichten. Ich möchte in der Lage sein, ihren Code zu bewerten und sicherzustellen, dass es korrekt ist. Also könnte meine Anweisung lauten: "Erstelle eine Variable namens i und setze sie gleich 1" und ich möchte testen, ob sie das richtig gemacht haben. In PHP kann ich isset ($ i) machen, ich brauche ein Äquivalent in Swift. Ich kann nicht verwenden, wenn ich == null, weil wie SimpleBob sagt, dass wird abstürzen, wenn nicht definiert ist.

Vielen Dank im Voraus!

Rob

+7

In Swift können Sie keine Variable verwenden, die nicht deklariert wurde (sie würde nicht kompilieren, Sie würden 'Verwendung des nicht aufgelösten Bezeichners 'i'erhalten). Können Sie genauer angeben, wie Ihr Code aussehen würde? – Daniel

+0

Warum brauchst du das? Was willst du erreichen? – Alexander

+0

Danke Jungs. Ich schreibe eine App, um Leute Swift zu unterrichten. Ich möchte in der Lage sein, ihren Code zu bewerten und sicherzustellen, dass es korrekt ist. Also könnte meine Anweisung lauten: "Erstelle eine Variable namens i und setze sie gleich 1" und ich möchte testen, ob sie das richtig gemacht haben. In PHP kann ich isset ($ i) machen, ich brauche ein Äquivalent in Swift. Ich kann nicht verwenden, wenn ich == null, weil wie SimpleBob sagt, dass wird abstürzen, wenn nicht definiert ist. – user2428168

Antwort

-2

Wenn Sie gerade schauen, um zu sehen, ob es eine Variable, um einen bestimmten Namen in einer Klasse ist, können Sie einfach starten Sie den Variablennamen in dieser Klasse eingeben und es sollte automatisch bevölkern.

Wie jedoch simpleBob erwähnt, wird der Code nicht kompilieren, wenn Variablen vor ihrer Deklaration verwendet werden.

Aktualisiert

Ich bin nicht sicher, wie Sie haben die Benutzer die Eingabe von Daten, aber wenn sie es in eine UITextView eingeben, könnten Sie die .containsString Eigenschaft greifen und sehen, ob sie in der Variablen setzen, wie du hast gefragt.

if myTextView.text.containsString("var i = 1") 
    { 
     print("They entered it correctly.") 
    } 
    else 
    { 
     // Do Something 
    } 

Sie könnten diese sogar verketten, um andere Variationen einzuschließen, die sie verwenden würden.

Ich hoffe, das hilft.

+0

Danke, das ist nicht das, was ich frage. Ich habe die Frage geklärt. – user2428168

+0

@ user2428168 schnelle Frage. Wie bewerten Sie die Nutzer?Werden sie in ein UITextView tippen? –

+0

Danke - auch wenn dies nicht funktioniert, da die Benutzer nicht unbedingt var i = 1 eingeben müssen - sie könnten beispielsweise var i = 1 eingeben. Ich könnte jeden möglichen Fall nachschlagen, oder Räume ausstreichen usw., aber das wäre sehr unordentlich. Sie geben den Swift-Code tatsächlich über ein Browserfenster ein und werden serverseitig verarbeitet. Es scheint unmöglich zu sagen, ob eine Variable in Swift erstellt wurde. – user2428168

-2

können Sie überprüfen, um zu sehen, ob inil ist

Try this:

if i == nil { 
//not declared 
} else if i != nil { 
//declared 
} 

Auch wenn Ihre Variable i erklären Sie sollten es optional machen. Wie folgt aus:

var i:Int? 

Dies ermöglicht Ihren Variable nil zu sein, daher kann es nicht definiert, aber noch existieren.

+0

Danke - das wird nicht funktionieren, da es abstürzen wird, wenn ich nicht deklariert bin. – user2428168

Verwandte Themen