Представить ViewController внутри оператора охраны swift - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь present viewcontroller в случае, если статус (Int?) Равен нулю следующим образом:

    guard let statusCode = status else {
        DispatchQueue.main.async() {
            let initViewController = self.storyboard!.instantiateViewController(withIdentifier: "SignInViewController")
            self.present(initViewController, animated: false, completion: nil)
        }
            return
    }

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

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Чтобы ответить на ваш вопрос относительно guard заявления и return ключевого слова

func yourFunc() {
    guard let statusCode = status else {
      return DispatchQueue.main.async() { [weak self] _ in
        let initViewController = self?.storyboard!.instantiateViewController(withIdentifier: "SignInViewController")
        self?.present(initViewController!, animated: false, completion: nil)
    }
  }
}
0 голосов
/ 10 мая 2018

Вы можете попробовать , если заявления

if let statusCode = status {
    //Success Block    
}
else{
    DispatchQueue.main.async() {
        let initViewController = self.storyboard!.instantiateViewController(withIdentifier: "SearchTabBarViewController")
        self.present(initViewController, animated: false, completion: nil)
    }
}

Многие из нас знакомы с необязательным связыванием и синтаксическим соглашением «если позволено» при развертывании необязательного значения. «If let» позволяет нам безопасно разворачивать необязательные значения только при наличии значения, а в противном случае блок кода не будет работать. Проще говоря, он сосредоточен на «истинном» состоянии, когда значение существует. В отличие от «если позволено», выражение «охранник» делает возможным ранний выход с упором на отрицательные случаи с ошибками, а не на положительные случаи. Это означает, что мы можем проверить отрицательные случаи раньше, запустив оператор else защиты, если условие НЕ выполнено, вместо того, чтобы ждать, пока вначале пройдут вложенные условия. подробнее с примером

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...