2017-01-28 8 views
-8

Я смотрю на курс видео IOS и человек в типах курсов до этого кода:Я не понимаю, что делает этот код (код о перетекает)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let nextVC = segue.destination as! CreateTasksViewController 
    nextVC.tasksVC = self 

} 

CreateTasksViewController это вид в проект, к которому мы должны перейти. Также «tasksVC» - это текущий контроллер представления, который в приложении мы должны быть включен. Я не понимаю, что означает этот код, и было бы полезно, если бы кто-то мог точно объяснить, что такое функция кода. Также, что «как!»? Если вам нужны какие-либо подробности о моей проблеме, не стесняйтесь спрашивать в комментариях.

+2

Непонимание, что означает 'как!' Означает, что вы не сделали уроки основного языка, и даже не пытались найти его, чтобы попытаться выяснить себя. Почему вы ожидаете понять язык, которого еще не научили? – Clive

+0

Я так и не взял! в моем курсе – tj75467

+0

Ссылка на него может быть полезна – tj75467

ответ

0

Это не лучший код. Вот как бы я его код (для записи, существует несколько способов, чтобы закодировать это!):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "[segue name here]" { 
     if let nextVC = segue.destination as? CreateTasksViewController { 
      nextVC.tasksVC = self 
     } 
    } 
} 

код Размещенный вами, что называется "forced unwrap" места назначения SEGUE (это , как вы спросил о). Here's Вопрос с довольно хорошим ответом, объясняющим опасности принудительной разворачивания. Прокрутите вниз до разделителя в ответе.

Хотя я уверен, что код компилируется (и, скорее всего, работает), проблема в обслуживании кода.

Предположим, у вас есть несколько segues, определенных между несколькими сценами, каждый со своим собственным контроллером вида? Мой код, в отношении стиля, отдает немного «Swiftiness» для «эксплицитности»:

  • (1) Проверка делается, что переход является правильным
  • (2) если пусть ... как? сделана для безопасной проверки, если место назначения segue, если правильный контроллер представления
  • (3) Если все проходит проверки, код выполняется. В этом случае, похоже, он передает весь (!) Контроллер представления в переменную с именем tasksVC в CreateTasksViewController.

Я действительно осторожно отношусь к пункту 3 - зачем кому-либо передавать один контроллер вида в другой как переменную? В большинстве случаев в подготовить (для segue :) одну или несколько переменных внутри передающий VC передается адресату. Если я могу предложить это вам ... найдите еще один учебник!