2016-07-10 18 views
-3

Wie ändere ich einen Wert in einer Schließung oder erhalte mindestens Daten von einer Schließung in Swift? Ich habe eine globale Variable, die außerhalb einer Klasse deklariert wurde, und ich versuche, sie innerhalb eines Abschluss- oder Vervollständigungsblocks zu ändern; Es wird jedoch nicht geändert, und ich kann keine Daten aus einer Sperrung abrufen.Wie ändert man globale Variablen innerhalb von Schließungen in swift?

var someGlobalVariable = 0 

    class someClass{ 


dispatch_async(dispatch_get_main_queue(), {() -> Void in 

         someGlobalVarible += 1 






        }) 
    } 

    print(someGlobalVariable) // returns 0 and not 1 
} 
+0

Es ist besser, wenn Sie ein Beispiel veröffentlichen, das nicht für Sie funktioniert, weil Sie externe Variablen ändern können, ohne etwas Besonderes zu tun. Sie könnten Retain-Zyklen haben, aber das ist eine andere Frage. –

+1

Dieses Beispiel kompiliert nicht. – zneak

+1

Das ist kein gültiger Swift-Code. Ich empfehle nicht, Code zu probieren, den du nicht verstehst (und das ist schrecklich kaputt), lies das Swift-Buch von Apple, bevor du etwas anderes tust. –

Antwort

0

Wenn ich mich richtig erinnere, können Sie auf die globale Variable zugreifen, indem Sie self hinzufügen. zu der Variable innerhalb des Verschlusses

+0

Das Problem hier ist, dass es Swift nicht einmal gültig ist ... –

0

Sie müssen die Variable drucken, nachdem sie aktualisiert wurde.

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

    someGlobalVarible += 1 
    print(someGlobalVariable) // will print 1 
}) 
}