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

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

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

есть глобальная переменная класса - hername, мне нужно ее инициализировать в этой строчке hername = object.objectForKey("name") as! String
но компилятор выдает ошибку, хочет чтобы я приписал к ней слово self, но тогда как я понимаю это уже будет
переменная с областью видимости внутри блока 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
Ответы с готовыми решениями:

Как инициализировать глобальную переменную в зависимости от количества строк в файле
Есть переменная типа int glob = 3; объявлена в не main(), т.е. глобальная....

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

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

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

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

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

Вы ее при объявлении инициализировали, так что
self.hername = object.objectForKey... - это простая операция присваивания.
0
Satell666
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 18
24.01.2016, 21:45  [ТС] 3
так она похоже уже снаружи блока if не видна, self.hername уже другая переменная
0
cin_cout
27 / 27 / 7
Регистрация: 06.10.2012
Сообщений: 130
24.01.2016, 23:21 4
Цитата Сообщение от Satell666 Посмотреть сообщение
так она похоже уже снаружи блока if не видна, self.hername уже другая переменная
В случае, если бы компилятор обнаружил необъявленную локальную переменную в блоке if, он попросил бы объявить переменную, а он нашел в коде ранее инициализированную переменную экземпляра и чисто по-дружески предложил наилучший выход из положения. Компилятор свифта очень умный.
0
Satell666
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 18
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 форме и во...


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

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

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