2016-07-10 3 views
-3

Как изменить значение в закрытии или, по крайней мере, получить данные из закрытия в Swift? У меня есть глобальная переменная, объявленная вне класса, и я пытаюсь изменить ее из блока закрытия или завершения; однако он не изменен, и я не могу получить данные из закрытия.Как изменить глобальные переменные внутри замыканий в swift?

var someGlobalVariable = 0 

    class someClass{ 


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

         someGlobalVarible += 1 






        }) 
    } 

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

Лучше, если вы опубликуете пример, который не работает для вас, потому что вы можете изменять внешние переменные, не делая ничего особенного. Вы могли бы сохранить циклы, но это другой вопрос. –

+1

Этот пример не компилируется. – zneak

+1

Это недопустимый быстрый код. Я не рекомендую попробовать код, который вы не понимаете (и это ужасно нарушено), прочитайте книгу Swift от Apple, прежде чем делать что-либо еще. –

ответ

0

Если я правильно помню, вы можете получить доступ к глобальной переменной, добавив себя. к переменной внутри укупорочного средства

self.someGlobalVariable 
+0

Проблема в том, что это даже не актуально Swift ... –

0

Вы должны распечатать переменную после ее обновления.

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

    someGlobalVarible += 1 
    print(someGlobalVariable) // will print 1 
}) 
} 
Смежные вопросы