Форум программистов, компьютерный форум, киберфорум
Наши страницы
Swift
Войти
Регистрация
Восстановить пароль
 
Satell666
0 / 0 / 1
Регистрация: 26.06.2015
Сообщений: 17
#1

Как инициализировать глобальную переменную внутри блока if - Swift

24.01.2016, 14:08. Просмотров 590. Ответов 4
Метки нет (Все метки)

есть глобальная переменная класса - hername, мне нужно ее инициализировать в этой строчке hername = object.objectForKey("name") as! String
но компилятор выдает ошибку, хочет чтобы я приписал к ней слово self, но тогда как я понимаю это уже будет
http://www.cyberforum.ru/cpp-beginners/thread1076573.html
переменная с областью видимости внутри блока if, либо это потому что инициализация происходит в асинхронном потоке, но как тогда мне сделать

Код
public var hername: String = ""

func loadSampleMeals() {
let query = PFQuery(className: "procedures")
     
        query.whereKey("masterlogin", equalTo: "hervam")
      
        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if error == nil {
        print("Successfully retrieved: \(objects)")
            if let objects = objects as? [PFObject] {
           
               for object in objects {
                
                    hername = object.objectForKey("name") as! String       //в этой строчке ошибка, компилятор наставает на //добавлении self - reference to property in closure requires explicit self. to make capture semantics explicit
              
                }
            }
           
            
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2016, 14:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как инициализировать глобальную переменную внутри блока if (Swift):

Как инициализировать переменную перед использованием внутри условия?
if(m1 == 0) { z1 = 100; } ...

Как объявить глобальную переменную?
Вобщем проблема у меня следующая, нужно увидеть переменную из одной формы в...

Как объявить глобальную переменную
При объявление Public ничего не происходит Public Sub Form1_Load(ByVal...

Как объявить глобальную переменную?
Угораздило установить Офис2003... :-/ неужели нельзя больше использовать...

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

4
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 120
24.01.2016, 16:20 #2
Компилятор хочет, чтобы вы явно указали, что имеете в виду именно эту переменную экземпляра. В блоке if ведь (теоретически) может существовать локальная переменная/константа с таким же именем.

Вы ее при объявлении инициализировали, так что
self.hername = object.objectForKey... - это простая операция присваивания.
0
Satell666
0 / 0 / 1
Регистрация: 26.06.2015
Сообщений: 17
24.01.2016, 21:45  [ТС] #3
так она похоже уже снаружи блока if не видна, self.hername уже другая переменная
0
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 120
24.01.2016, 23:21 #4
Цитата Сообщение от Satell666 Посмотреть сообщение
так она похоже уже снаружи блока if не видна, self.hername уже другая переменная
В случае, если бы компилятор обнаружил необъявленную локальную переменную в блоке if, он попросил бы объявить переменную, а он нашел в коде ранее инициализированную переменную экземпляра и чисто по-дружески предложил наилучший выход из положения. Компилятор свифта очень умный.
0
Satell666
0 / 0 / 1
Регистрация: 26.06.2015
Сообщений: 17
25.01.2016, 17:57  [ТС] #5
мне нужно инициализировать глобальную переменную из другого потока, как это сделать?
0
25.01.2016, 17:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2016, 17:57
Привет! Вот еще темы с решениями:

Как объявить глобальную переменную?
Как объявить глобальную переменную?у меня 16 блоков и нужно чтобы она была...

Как создать глобальную переменную
Как сделать переменную которая будет роботать везде. Везде- в 1 форме и во...

Как создать глобальную переменную?
Доброй ночи. Спасайте. Надо создать глобальную переменную string, Значение...

Как объявить глобальную переменную?
подскажите люди добрые, как объявить(а точнее где?) в form2 (которая вызывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru