Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Satell666
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 16
24.01.2016, 14:08     Как инициализировать глобальную переменную внутри блока if #1
есть глобальная переменная класса - 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
              
                }
            }
           
            
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2016, 14:08     Как инициализировать глобальную переменную внутри блока if
Посмотрите здесь:

Swift Как из одного View передать переменную в другой?
Swift Как из одного View Controller передать переменную в другой

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

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

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

Текущее время: 12:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru