2017-10-30 4 views
0

次のビューを表示する前にログイン認証を検証する必要があります。私はこれらのエラーをどのように "印刷"するのか知っていますが、セグを防ぐためにはfalseを返す必要があります。swift 4:falseを返し、webserviceのログインデータを確認します

は、私がWebサービスからJSONデータを取得するための準備機能を使用します。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     do { 
      let username = txtUsername.text 
      let password = txtPassword.text 

      // webservice 
      let urlString = "http://myweb.com/api/user/username/\(username!)/password/\(password!)/key/xxx" 

      if let url = URL(string: urlString) { 
       let datosWeb = try Data(contentsOf: url) 
       // json 
       let jsonObject = try JSONSerialization.jsonObject(with: datosWeb, options: []) 
       if let temp = jsonObject as? [[String:String]] { 
        self.items = temp 
       } 
      } else { 
       print("URL not exists") // I need a return false 
      } 
     } catch { 
      print("Error obtaining data") // I need a return false 
     } 
    } 

だからブール出力を持っていない機能を用意します。私はshouldPerformSegueでテキストフィールドの検証をしていますが、 "after"を検証するために同様の関数が必要です。

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { 
     if (txtUsername.text?.isEmpty)! || (txtPassword.text?.isEmpty)! { 
      showAlert(title: "Error", message: "Please, complete the fields.") 
      return false 
     } 
     else { 
      return true 
     } 
    } 

答えて

2

おそらく、ログインをトリガするためにログインボタンを持っていないので、あなたのログインボタンロジックでこれを実行する必要があります。

func loginClicked() { 
    if (txtUsername.text?.isEmpty)! || (txtPassword.text?.isEmpty)! { 
     showAlert(title: "Error", message: "Please, complete the fields.") 
    } 
    else { 
     self.performSegue(withIdentifier: "SegueID", sender: nil) 
    } 
} 

ブール変数を渡す必要が。あなたの妥当性検査があなたのセグを行う場合。

+0

ありがとう、思ったよりずっと簡単でした – csotelo

関連する問題