Swift - не может получить доступ к свойствам структуры - PullRequest
0 голосов
/ 23 февраля 2020

Обучение быстро, но немного запутано относительно ниже. Я создал и создал экземпляр структуры, но не могу получить доступ к свойству структуры внутри моего класса контроллера представления, если структура не находится внутри одного из моих методов класса. Смотрите ниже, почему это так?

class WeatherViewController: UIViewController, UITextFieldDelegate, WeatherManagerDelegate {



    //create new weather manager struct
    var weatherManager = WeatherManager()

    //can't access property here, but I can access it inside of functions within this
    //class, see below under viewDidLoad()
     weatherManager.delegate = self

    @IBOutlet weak var conditionImageView: UIImageView!
    @IBOutlet weak var temperatureLabel: UILabel!
    @IBOutlet weak var cityLabel: UILabel!
    @IBOutlet weak var searchTextField: UITextField!


    override func viewDidLoad() {
        super.viewDidLoad()


        //can access property here
        weatherManager.delegate = self

    }

1 Ответ

2 голосов
/ 23 февраля 2020

Проблема не в том, где объект WeatherManager объявлен и создан. Проблема в том, что эта строка:

weatherManager.delegate = self

является командой (технически оператор ), а не объявлением. (Строка над ним является объявлением, которое также устанавливает значение по умолчанию свойства weatherManager). Это довольно универсальное правило в большинстве языков семейства C ++ / Java - см. Короткий пример C ++ ниже. Команда (оператор) должна находиться внутри какого-либо метода (или функции в не OOP программировании), а не на верхнем уровне файла или класса. В Swift такие действия, как установка делегата объекта, обычно go в контроллере представления viewDidLoad.


int x = 0;  // legal: declaring a global variable                               

x = x + 42; // NOT legal: this is a statement, not a declaraiton                

int main()
{
  x = x + 42; // legal: now we're inside a function                             
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...