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

Swift

Войти
Регистрация
Восстановить пароль
 
Satell666
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 17
#1

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

24.01.2016, 14:08. Просмотров 451. Ответов 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
              
                }
            }
           
            
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2016, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как инициализировать глобальную переменную внутри блока if (Swift):

Как инициализировать глобальную переменную в зависимости от количества строк в файле - C++
Есть переменная типа int glob = 3; объявлена в не main(), т.е. глобальная. После неё, тоже не в mаin, объявлены структуры ex: struct...

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

Как описать глобальную переменную? - MS Access
Объявляю глобальную переменную в модуле формы Public flag as Integerно из других модулей её не видно. Что я не так делаю?

Как создать глобальную переменную? - C++
Создаю небольшой проект. Несколько функций и собственно тело программы. В теле объявил переменную int rep. Далее мне надо обратиться к ней...

.NET 4.x Как реализовать глобальную переменную? - C# WPF
Здравствуйте товарищи. есть как бы глобальная переменная int currpos = new int; currpos = 0; currpos = 10; канвас

.NET 3.x Как объявить глобальную переменную - Visual Basic .NET
При объявление Public ничего не происходит Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles...

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

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

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

Как задать глобальную переменную? - C++ Builder
Как задать глобальную переменную которая будет работать на всех формах проги? Заранее спасибо.

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.01.2016, 17:57
Ответ Создать тему
Опции темы

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